썸네일 함수 (언샵마스크 기능 추가) > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

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

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

첨부파일

image_proc.function.php (37.4K) 115회 다운로드 2012-02-28 06:33:52

본문

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

사용법은 기존과 동일하며

$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);

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


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

댓글 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 의 값으로 사용합니다.



이 값의 변화를 알고 싶으면 포토샵을 연 후에 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) 경로에 대해서 실제 경로를 입력해 주어야 되는지요?  아니면 그냥 놔두어도 되는지 문의 드립니다.~^^
전체 64
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT