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

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

사용법은 기존과 동일하며

$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년 전 조회 849
13년 전 조회 869
13년 전 조회 989
13년 전 조회 1,791
13년 전 조회 1,608
13년 전 조회 1,330
13년 전 조회 1,537
13년 전 조회 3,692
13년 전 조회 798
13년 전 조회 1,685
13년 전 조회 1,504
13년 전 조회 657
13년 전 조회 786
13년 전 조회 661
13년 전 조회 8,394
13년 전 조회 876
13년 전 조회 1,680
13년 전 조회 1,353
13년 전 조회 785
13년 전 조회 525
13년 전 조회 3,755
13년 전 조회 574
13년 전 조회 725
13년 전 조회 1,782
13년 전 조회 1,281
13년 전 조회 1,327
13년 전 조회 1,027
13년 전 조회 983
13년 전 조회 734
13년 전 조회 1,282
13년 전 조회 885
13년 전 조회 1,711
13년 전 조회 1,051
13년 전 조회 2,723
13년 전 조회 592
13년 전 조회 2,262
13년 전 조회 2,649
13년 전 조회 4,409
13년 전 조회 985
13년 전 조회 1,204
13년 전 조회 1,380
13년 전 조회 1,200
13년 전 조회 1,201
13년 전 조회 2,871
13년 전 조회 1,283
13년 전 조회 1,041
13년 전 조회 1,170
13년 전 조회 1,165
13년 전 조회 848
13년 전 조회 1,726
13년 전 조회 2,109
13년 전 조회 1,394
13년 전 조회 993
13년 전 조회 973
13년 전 조회 866
13년 전 조회 1,593
13년 전 조회 2,629
13년 전 조회 1,335
13년 전 조회 1,619
13년 전 조회 1,145
13년 전 조회 1,162
13년 전 조회 1,369
13년 전 조회 892
13년 전 조회 869
13년 전 조회 880
13년 전 조회 1,213
13년 전 조회 1,289
13년 전 조회 1,047
13년 전 조회 812
13년 전 조회 1,085
13년 전 조회 1,032
13년 전 조회 957
13년 전 조회 1,061
13년 전 조회 958
13년 전 조회 1,269
13년 전 조회 1,039
13년 전 조회 1,164
13년 전 조회 1,679
13년 전 조회 620
13년 전 조회 2,946
13년 전 조회 649
13년 전 조회 844
13년 전 조회 639
13년 전 조회 1,022
13년 전 조회 953
13년 전 조회 1,221
13년 전 조회 745
13년 전 조회 1,817
13년 전 조회 1,453
13년 전 조회 1,038
13년 전 조회 6,716
13년 전 조회 639
13년 전 조회 1,008
13년 전 조회 850
13년 전 조회 992
13년 전 조회 1,276
13년 전 조회 873
13년 전 조회 1,129
13년 전 조회 715
13년 전 조회 740
🐛 버그신고