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

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

사용법은 기존과 동일하며

$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,419
13년 전 조회 1,470
13년 전 조회 1,606
13년 전 조회 2,389
13년 전 조회 2,225
13년 전 조회 1,956
13년 전 조회 2,128
13년 전 조회 4,376
13년 전 조회 1,435
13년 전 조회 2,337
13년 전 조회 2,137
13년 전 조회 1,298
13년 전 조회 1,427
13년 전 조회 1,283
13년 전 조회 9,129
13년 전 조회 1,545
13년 전 조회 2,354
13년 전 조회 2,067
13년 전 조회 1,415
13년 전 조회 1,162
13년 전 조회 4,467
13년 전 조회 1,211
13년 전 조회 1,361
13년 전 조회 2,441
13년 전 조회 1,913
13년 전 조회 1,974
13년 전 조회 1,679
13년 전 조회 1,655
13년 전 조회 1,398
13년 전 조회 1,898
13년 전 조회 1,568
13년 전 조회 2,395
13년 전 조회 1,740
13년 전 조회 3,470
14년 전 조회 1,263
14년 전 조회 2,926
14년 전 조회 3,303
14년 전 조회 5,022
14년 전 조회 1,624
14년 전 조회 1,845
14년 전 조회 2,049
14년 전 조회 1,874
14년 전 조회 1,965
14년 전 조회 3,544
14년 전 조회 1,958
14년 전 조회 1,699
14년 전 조회 1,815
14년 전 조회 1,836
14년 전 조회 1,543
14년 전 조회 2,402
14년 전 조회 2,711
14년 전 조회 2,090
14년 전 조회 1,664
14년 전 조회 1,625
14년 전 조회 1,482
14년 전 조회 2,324
14년 전 조회 3,272
14년 전 조회 2,019
14년 전 조회 2,304
14년 전 조회 1,791
14년 전 조회 1,844
14년 전 조회 2,018
14년 전 조회 1,573
14년 전 조회 1,544
14년 전 조회 1,580
14년 전 조회 1,899
14년 전 조회 1,944
14년 전 조회 1,721
14년 전 조회 1,460
14년 전 조회 1,737
14년 전 조회 1,700
14년 전 조회 1,621
14년 전 조회 1,756
14년 전 조회 1,628
14년 전 조회 1,942
14년 전 조회 1,708
14년 전 조회 1,844
14년 전 조회 2,356
14년 전 조회 1,294
14년 전 조회 3,579
14년 전 조회 1,298
14년 전 조회 1,513
14년 전 조회 1,270
14년 전 조회 1,671
14년 전 조회 1,608
14년 전 조회 1,900
14년 전 조회 1,373
14년 전 조회 2,446
14년 전 조회 2,126
14년 전 조회 1,695
14년 전 조회 7,382
14년 전 조회 1,293
14년 전 조회 1,667
14년 전 조회 1,423
14년 전 조회 1,608
14년 전 조회 1,950
14년 전 조회 1,461
14년 전 조회 1,788
14년 전 조회 1,391
14년 전 조회 1,379