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

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

사용법은 기존과 동일하며

$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년 전 조회 862
13년 전 조회 879
13년 전 조회 1,004
13년 전 조회 1,801
13년 전 조회 1,616
13년 전 조회 1,341
13년 전 조회 1,548
13년 전 조회 3,700
13년 전 조회 809
13년 전 조회 1,698
13년 전 조회 1,515
13년 전 조회 672
13년 전 조회 795
13년 전 조회 673
13년 전 조회 8,404
13년 전 조회 891
13년 전 조회 1,690
13년 전 조회 1,363
13년 전 조회 794
13년 전 조회 540
13년 전 조회 3,765
13년 전 조회 584
13년 전 조회 741
13년 전 조회 1,796
13년 전 조회 1,296
13년 전 조회 1,339
13년 전 조회 1,040
13년 전 조회 993
13년 전 조회 742
13년 전 조회 1,293
13년 전 조회 896
13년 전 조회 1,719
13년 전 조회 1,065
13년 전 조회 2,734
13년 전 조회 607
13년 전 조회 2,272
13년 전 조회 2,663
13년 전 조회 4,427
13년 전 조회 998
13년 전 조회 1,212
13년 전 조회 1,396
13년 전 조회 1,209
13년 전 조회 1,213
13년 전 조회 2,881
13년 전 조회 1,297
13년 전 조회 1,050
13년 전 조회 1,182
13년 전 조회 1,174
13년 전 조회 856
13년 전 조회 1,729
13년 전 조회 2,120
13년 전 조회 1,407
13년 전 조회 1,000
13년 전 조회 979
13년 전 조회 876
13년 전 조회 1,605
13년 전 조회 2,640
13년 전 조회 1,341
13년 전 조회 1,624
13년 전 조회 1,153
13년 전 조회 1,173
13년 전 조회 1,382
13년 전 조회 897
13년 전 조회 874
13년 전 조회 892
13년 전 조회 1,222
13년 전 조회 1,295
13년 전 조회 1,058
13년 전 조회 816
13년 전 조회 1,094
13년 전 조회 1,043
13년 전 조회 968
13년 전 조회 1,071
13년 전 조회 967
13년 전 조회 1,278
13년 전 조회 1,044
13년 전 조회 1,169
13년 전 조회 1,687
13년 전 조회 632
13년 전 조회 2,956
13년 전 조회 660
13년 전 조회 859
13년 전 조회 649
13년 전 조회 1,032
13년 전 조회 970
13년 전 조회 1,229
13년 전 조회 754
13년 전 조회 1,821
13년 전 조회 1,460
13년 전 조회 1,042
13년 전 조회 6,723
13년 전 조회 647
13년 전 조회 1,018
13년 전 조회 852
13년 전 조회 999
13년 전 조회 1,291
13년 전 조회 883
13년 전 조회 1,134
13년 전 조회 726
13년 전 조회 746
🐛 버그신고