썸네일 함수 (언샵마스크 기능 추가)

시하님의 팁을 바탕으로 언샵마스크 기능을 추가하였습니다.

사용법은 기존과 동일하며

$options = Array();
$options['unsharpmask_use'] = 0;//사용안함

create_thumbnail('http://apmusers.com/tt/attach/1/1267047665.jpg', 'a.png', 50, 0, $options);

$options = Array();
$options['unsharpmask_use'] = 1;//사용함
$options['unsharpmask_amount'] = 100;
$options['unsharpmask_radius'] = 1;
$options['unsharpmask_threshold'] = 2;

create_thumbnail('http://apmusers.com/tt/attach/1/1267047665.jpg', 'b.png', 50, 0, $options);

등과 같이 사용할수 있습니다.


언샵마스크란 포토샵 과 같은 이미지 툴에서
색상의 경계선간의 차이를 명확하게 하여
전체적으로 사진이 선명하게 보이도록 하는 역활을 뜻하는 것 같습니다.

첨부파일

image_proc.function.php (37.4 KB) 114회 2012-02-28 06:33
|

댓글 11개

/*
이름 : create_thumbnail

용도 : 원본을 조건에 따라 리사이즈, 크롭, 워터마크를 처리하여 파일로 저장함

성공시 리턴값 : true

실패시 리턴값 : false

인자 :
==> $path_src_file_or_url : 원본파일의 절대경로 또는 상대경로 또는 주소
==> $path_save_file : 썸네일을 저장할 절대경로 또는 상대경로
==> $save_w : 만들 썸네일의 너비
==> $save_h : 만들 썸네일의 높이, 생략 가능하며 생략시 기본값은 0
==> $options : 함수 내부에 정의된 변수들의 값을 변경할때 사용, 배열형태, 생략가능하며 생략시 기본값은 빈배열(Array())
==> $options['save_quality'] : 파일로 저장시 저장될 파일의 품질, 100 이하의 양의 정수만 사용, gif는 의미 없음
==> $options['save_force'] : 이미 동일한 경로에 동일이름의 파일이 존재할때의 처리 결정
0 이면 false 반환, 1 이면 더이상 실행안하고 true 반환, 2 이면 기존거는 지우고 새로 저장
==> $options['unsharpmask_use'] : 언샵마스크 사용 여부, 0 은 사용안함, 1은 사용함
==> $options['unsharpmask_amount'] : 샤픈은 명과 암부의 색상이 변화되어 경계면이 강조되어 보이도록 하는 것으로 경계면에서의 명암 대비를 강화하는 정도 %
1 에서 500 사이의 정수만 사용가능
==> $options['unsharpmask_radius'] : 경계면의 강조되는 범위를 말하는 것으로 작게할 수록 경계면에서 샤픈을 위한 명암이 강조 범위가 좁아짐
즉, 강조되는 경계면이 얇아짐.
0.5 에서 50 사이의 정수와 소수 사용가능
==> $options['unsharpmask_threshold'] : 설정된 수준 이상의 명암차가 있는 경계만 강조됨.
예를들어 10으로 설정할 경우 경계면의 명암차가 10 이상 나지 않는 경계면은 강조하지 않음.
너무 높게할 경우 대부분은 샤픈되지 않음. 가장 낮게 할 경우 모든 경계면이 강조됨.

==> $options['crop_use'] : 크롭 사용 여부, 0 은 사용안함, 1은 사용함
==> $options['crop_pos_width'] : 너비 기준으로 크롭할때 기준부위 결정, 1은 왼쪽, 2는 가운데, 3은 오른쪽
==> $options['crop_pos_height'] : 높이 기준으로 크롭할때 기준부위 결정, 1은 상단, 2는 중단, 3은 하단
==> $options['watermark_path_file'] : 워터마크 이미지 파일의 절대경로 또는 상대경로
==> $options['watermark_pos'] : 워터마크 찍는 위치 결정, 1 은 상단 왼쪽, 2는 상단 오른쪽, 3은 하단 왼쪽, 4는 하단 오른쪽, 5는 중앙, 10 은 전체에 반복
==> $options['watermark_sharpness'] : 워터마크의 선명도, 100 이하의 양의 정수만 사용
==> 100 일경우에는 투명이미지 사용가능
==> $options['watermark_padding'] : 워터마크의 여백, 0이상의 양의 정수, 패딩의 크기는 워터마크이미지의 너비나 높이보다 클수 없음
*/
감사합니다 창화님^^
덕분에 세로기준 중간 크롭도 사용할 수 있어서 매우 흡족합니다.

잘 사용하겠습니다 ^^

제가 창화님께 추천해드린 언샵마스크 값이
$options['unsharpmask_amount'] = 100;
$options['unsharpmask_radius'] = 1;
$options['unsharpmask_threshold'] = 2;
위와 같은데 이것에 대해 짧게 부연 설명을 드리자면

사진찍는 분들이 포토샵에서 가장 흔하게 사용하는 언샵마스크 값이 100.1.2 입니다.
흔히 "배길리"라고 말하는데요...
큰 이미지를 크롭하거나 리사이즈 한 후에
amount :100 / radius : 1 / threshols : 2 의 값으로 사용합니다.

[http://sir.co.kr/data/cheditor4/1202/ab33ef458a0ccd5639fb807976b8d1ea_aXz38VwxEf4cSOX6.gif]

이 값의 변화를 알고 싶으면 포토샵을 연 후에 filter > UnsharpMask 를 이용해 보세요.
좋은 코멘트 감사합니다.
감사합니다.

옵션유형별 순서도 아래가 기본인가요?
------------
//기본값 설정
$save_quality = 70;//저장 품질 : 70 %
$save_force = 2;//저장형태 : 파일 덮어씌움

$unsharpmask_use = 1;//언샵마스크 사용여부
$unsharpmask_amount = 100;
$unsharpmask_radius = 1;
$unsharpmask_threshold = 2;

$crop_use = 0;//크롭 사용여부
$crop_pos_width = 2;//너비 기준 크롭시 중앙을 기준
$crop_pos_height = 1;//높이 기준 크롭시 상단을 기준

$watermark_path_file = '';//워터마크로 사용할 파일 경로 : 없음
$watermark_pos = 4;//워터마크 찍는 위치 : 하단 오른쪽
$watermark_sharpness = 30;//워터마크 이미지의 선명도 : 30 %
$watermark_padding = 10;//원본과 워터마크 사이의 여백 : 10px
네 그것이 제가 잡아놓은 기본값입니다.

그런데 많이 쓰는 형태로 옵션은 바꿔도 상관없습니다.
감사합니다 ^^ 추천날리구 가요!!
echo $GLOBALS['errormsg']; 를 추가로 출력해보면
"740365499_bFTE6ZoD_000_0021.jpg은 파일이 아닙니다." 라고 뜹니다.
어디를 손봐야하는가요?

http://ongga.com/bbs/board.php?bo_table=morningwebU3_Zn&page=0
링크입니다.

-------------
if (!is_file($path_save_file)) {

foreach($list[$i]['file'] as $k => $v) {

if (preg_match("`\.(gif|jpe?g|png)$`i", $v[source])) {

if (create_thumbnail($v['file'], $path_save_file, $save_w, $save_h, $options)){

$list[$i]['thumbnail'] = $path_save_file;

break;
}
}
}

if (empty($list[$i]['thumbnail']) && !empty($list[$i]['wr_content']) && preg_match("`src\s*=([^>]+\.(gif|jp?g|png))('|\"|\s|>)`iU", $list[$i]['wr_content'], $m)) {

$m[1] = preg_replace("`[\s\"']+`", '', $m[1]);

if (!empty($m[1])) {

if (create_thumbnail($m[1], $path_save_file, $save_w, $save_h, $options)){

$list[$i]['thumbnail'] = $path_save_file;
}
}
}
}
else {

$list[$i]['thumbnail'] = $path_save_file;
}


if (create_thumbnail($v['file'], $path_save_file, $save_w, $save_h, $options)){

이거를

if (create_thumbnail($g4['path'] . '/data/file/' . $bo_table . '/' . $v['file'], $path_save_file, $save_w, $save_h, $options)){

이렇게 바꾸면 되겟네요.
ㅎㅎㅎ
이번에는 한번 클릭에 와르르르 쏟아집니다...

괴렵혀드려서 죄송했습니다.
메일답글 안주셔도 됩니다.
안녕하세요? 완전 생초보입니다.
지금 설치하려고 하는데, 아직 완성을 잘못해서..,가장 초보적인 질문을 드리겠습니다.
37줄 부터 시작되는 ($path_file) 경로에 대해서 실제 경로를 입력해 주어야 되는지요? 아니면 그냥 놔두어도 되는지 문의 드립니다.~^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

태그 필터 (최대 3개) 전체 개발자 소스 기타 mysql 팁자료실 javascript php linux flash 정규표현식 jquery node.js mobile 웹서버 os 프로그램 강좌 썸네일 이미지관련 도로명주소 그누보드5 기획자 견적서 계약서 기획서 마케팅 제안서 seo 통계 서식 통계자료 퍼블리셔 html css 반응형 웹접근성 퍼블리싱 표준화 반응형웹 홈페이지기초 부트스트랩 angularjs 포럼 스크린리더 센스리더 개발자톡 개발자팁 퍼블리셔톡 퍼블리셔팁 기획자톡 기획자팁 프로그램강좌 퍼블리싱강좌
+
제목 글쓴이 날짜 조회
13년 전 조회 1,395
13년 전 조회 1,449
13년 전 조회 1,582
13년 전 조회 2,363
13년 전 조회 2,208
13년 전 조회 1,937
13년 전 조회 2,111
13년 전 조회 4,363
13년 전 조회 1,410
13년 전 조회 2,318
13년 전 조회 2,119
13년 전 조회 1,275
13년 전 조회 1,406
13년 전 조회 1,281
13년 전 조회 9,110
13년 전 조회 1,515
13년 전 조회 2,327
13년 전 조회 2,056
13년 전 조회 1,396
13년 전 조회 1,145
13년 전 조회 4,448
13년 전 조회 1,187
13년 전 조회 1,335
13년 전 조회 2,417
13년 전 조회 1,892
13년 전 조회 1,955
13년 전 조회 1,655
13년 전 조회 1,635
13년 전 조회 1,379
13년 전 조회 1,891
13년 전 조회 1,538
13년 전 조회 2,364
13년 전 조회 1,718
13년 전 조회 3,459
13년 전 조회 1,241
13년 전 조회 2,904
13년 전 조회 3,281
14년 전 조회 5,019
14년 전 조회 1,600
14년 전 조회 1,820
14년 전 조회 2,023
14년 전 조회 1,849
14년 전 조회 1,953
14년 전 조회 3,518
14년 전 조회 1,937
14년 전 조회 1,680
14년 전 조회 1,792
14년 전 조회 1,811
14년 전 조회 1,516
14년 전 조회 2,379
14년 전 조회 2,706
14년 전 조회 2,065
14년 전 조회 1,633
14년 전 조회 1,624
14년 전 조회 1,480
14년 전 조회 2,312
14년 전 조회 3,254
14년 전 조회 2,000
14년 전 조회 2,279
14년 전 조회 1,773
14년 전 조회 1,817
14년 전 조회 2,001
14년 전 조회 1,544
14년 전 조회 1,518
14년 전 조회 1,547
14년 전 조회 1,873
14년 전 조회 1,921
14년 전 조회 1,688
14년 전 조회 1,433
14년 전 조회 1,714
14년 전 조회 1,674
14년 전 조회 1,591
14년 전 조회 1,730
14년 전 조회 1,613
14년 전 조회 1,921
14년 전 조회 1,684
14년 전 조회 1,818
14년 전 조회 2,332
14년 전 조회 1,276
14년 전 조회 3,577
14년 전 조회 1,292
14년 전 조회 1,492
14년 전 조회 1,253
14년 전 조회 1,648
14년 전 조회 1,588
14년 전 조회 1,876
14년 전 조회 1,350
14년 전 조회 2,446
14년 전 조회 2,101
14년 전 조회 1,671
14년 전 조회 7,356
14년 전 조회 1,267
14년 전 조회 1,645
14년 전 조회 1,401
14년 전 조회 1,605
14년 전 조회 1,928
14년 전 조회 1,457
14년 전 조회 1,765
14년 전 조회 1,372
14년 전 조회 1,374