썸네일 함수 (언샵마스크 기능 추가)
시하님의 팁을 바탕으로 언샵마스크 기능을 추가하였습니다.
사용법은 기존과 동일하며
$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);
등과 같이 사용할수 있습니다.
언샵마스크란 포토샵 과 같은 이미지 툴에서
색상의 경계선간의 차이를 명확하게 하여
전체적으로 사진이 선명하게 보이도록 하는 역활을 뜻하는 것 같습니다.
댓글 11개
Terrorboy
13년 전
팬1호입니다~
13년 전
/*
이름 : 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이상의 양의 정수, 패딩의 크기는 워터마크이미지의 너비나 높이보다 클수 없음
*/
이름 : 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이상의 양의 정수, 패딩의 크기는 워터마크이미지의 너비나 높이보다 클수 없음
*/
13년 전
감사합니다 창화님^^
덕분에 세로기준 중간 크롭도 사용할 수 있어서 매우 흡족합니다.
잘 사용하겠습니다 ^^
제가 창화님께 추천해드린 언샵마스크 값이
$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 를 이용해 보세요.
덕분에 세로기준 중간 크롭도 사용할 수 있어서 매우 흡족합니다.
잘 사용하겠습니다 ^^
제가 창화님께 추천해드린 언샵마스크 값이
$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 를 이용해 보세요.
13년 전
좋은 코멘트 감사합니다.
morning
13년 전
감사합니다.
옵션유형별 순서도 아래가 기본인가요?
------------
//기본값 설정
$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
옵션유형별 순서도 아래가 기본인가요?
------------
//기본값 설정
$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
13년 전
네 그것이 제가 잡아놓은 기본값입니다.
그런데 많이 쓰는 형태로 옵션은 바꿔도 상관없습니다.
그런데 많이 쓰는 형태로 옵션은 바꿔도 상관없습니다.
13년 전
감사합니다 ^^ 추천날리구 가요!!
morning
13년 전
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;
}
"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;
}
13년 전
음
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)){
이렇게 바꾸면 되겟네요.
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)){
이렇게 바꾸면 되겟네요.
morning
13년 전
ㅎㅎㅎ
이번에는 한번 클릭에 와르르르 쏟아집니다...
괴렵혀드려서 죄송했습니다.
메일답글 안주셔도 됩니다.
이번에는 한번 클릭에 와르르르 쏟아집니다...
괴렵혀드려서 죄송했습니다.
메일답글 안주셔도 됩니다.
13년 전
안녕하세요? 완전 생초보입니다.
지금 설치하려고 하는데, 아직 완성을 잘못해서..,가장 초보적인 질문을 드리겠습니다.
37줄 부터 시작되는 ($path_file) 경로에 대해서 실제 경로를 입력해 주어야 되는지요? 아니면 그냥 놔두어도 되는지 문의 드립니다.~^^
지금 설치하려고 하는데, 아직 완성을 잘못해서..,가장 초보적인 질문을 드리겠습니다.
37줄 부터 시작되는 ($path_file) 경로에 대해서 실제 경로를 입력해 주어야 되는지요? 아니면 그냥 놔두어도 되는지 문의 드립니다.~^^
게시글 목록
| 번호 | 제목 |
|---|---|
| 30076 |
HTML
css 질문드립니다.
1
|
| 16255 |
JavaScript
자바스크립트 문장해석
2
|
| 16251 | |
| 16247 | |
| 16244 | |
| 16242 |
MySQL
주말 PHP + Mysql 알바하실분.
1
|
| 16237 | |
| 16236 |
jQuery
체크박스 체크시 셀렉트 선택 못하게
|
| 16233 | |
| 16230 |
JavaScript
텍스트 박스 숫자 증가 관련하여서
2
|
| 16220 | |
| 16219 |
Linux
리눅스 메모리 테스트 유틸 memtest
|
| 16218 |
Linux
nginx 에서 대역폭 제한하기~
|
| 26286 | |
| 16215 | |
| 30075 |
HTML
메인페이지 최근사진 엑박 뜨는데요
|
| 16212 |
jQuery
블랙바탕에 유용한 셀렉트박스 디자인
2
|
| 16209 | |
| 30072 | |
| 30069 | |
| 3938 | |
| 30065 | |
| 16207 |
JavaScript
밑에 질문 첨부파일 추가했어요..
1
|
| 16195 | |
| 16193 | |
| 30064 | |
| 30063 |
HTML
css3 질문인데요..
|
| 16191 |
PHP
정규식에 관한
1
|
| 16183 |
JavaScript
이 오류 해석좀 해주세요..
7
|
| 16177 | |
| 16175 | |
| 16170 |
Mobile
모바일 관련 두가지 질문드릴게요!
4
|
| 26283 |
계약서
노하우사용계약서
2
|
| 26282 |
서식
공유물분할합의서
|
| 26281 |
서식
금전차용증서
|
| 26280 |
계약서
근로계약서
|
| 26279 |
서식
고소장(2)
|
| 26278 |
서식
고소장(1)
|
| 26277 |
서식
계약해제통지서
|
| 26276 |
계약서
계속적상거래계약서
|
| 26275 |
계약서
건축하도급계약서
|
| 26274 |
계약서
건물임대차계약서
|
| 26273 |
서식
건물매수청구서
|
| 26272 |
계약서
건물매매계약서(2면)
|
| 26271 |
계약서
건물매매계약서(1면)
|
| 26270 |
서식
거래약정서
|
| 26269 |
서식
거래사실확인서
|
| 26268 |
계약서
가옥임대차계약서
|
| 26267 |
계약서
가등기담보설정계약서
|
| 26266 |
계약서
가공위탁계약서
|
| 26265 |
계약서
가계임대계약서
|
| 26263 |
계약서
OEM계약서
1
|
| 16168 | |
| 16137 | |
| 16136 |
PHP
고수님들 들어오세요
|
| 16135 |
JavaScript
스크립트에 설명좀 달아주십시요~~
|
| 3933 | |
| 26261 | |
| 24349 | |
| 30060 |
HTML
background 반복질문 ㅠㅠ
2
|
| 3929 | |
| 16133 |
기타
공공아이핀
1
|
| 16132 |
JavaScript
풀다운메뉴에서 테두리및버튼색깔 변경하기
|
| 30056 |
HTML
플래시를 수정해서 넣었는데
3
|
| 16126 | |
| 3926 | |
| 26259 | |
| 24346 | |
| 16123 |
JavaScript
뮤직플레이어 질문이에요!
2
|
| 30044 |
HTML
지적 부탁드립니다.
11
|
| 3923 | |
| 3921 | |
| 16116 | |
| 16112 |
PHP
db를 불러올때말이지요..
3
|
| 16107 |
JavaScript
ajax 관련 한글 깨짐 어떻게 해야 하나요?
4
|
| 16099 |
JavaScript
접기/펼치기 태그 질문입니다.
7
|
| 3920 | |
| 26253 | |
| 26252 | |
| 24345 | |
| 16093 |
JavaScript
onclick 익스버전문제인가요?
5
|
| 3914 | |
| 3911 | |
| 16089 | |
| 16087 |
JavaScript
AJAX에서 euc-kr 한글처리시 깨질때
1
|
| 16084 |
jQuery
책 목록 슬라이드
2
|
| 3908 | |
| 16081 | |
| 24344 | |
| 16078 |
PHP
다른함수는 없을까요????
2
|
| 3903 | |
| 26250 |
계약서
연봉계약서
1
|
| 26249 |
계약서
표준 매매계약서
|
| 3899 | |
| 3898 | |
| 16066 | |
| 30038 | |
| 16056 |
jQuery
E-BOOK 하나 올립니다.
9
|
| 16053 | |
| 16051 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기