PHP & Others

썸네일 만드는 함수(원격이미지포함, 리사이즈, 크롭, 워터마크)

페이지 정보

본문

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

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


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

/* 
이름 : 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 의 값으로 사용합니다. 


sys_get_temp_dir 를 쓸수 없는 환경일때

if ( !function_exists('sys_get_temp_dir')) {
    function sys_get_temp_dir() {
        if( $temp=getenv('TMP') ) return $temp;
        if( $temp=getenv('TEMP') ) return $temp;
        if( $temp=getenv('TMPDIR') ) return $temp;
        $temp=tempnam(__FILE__,'');
        if (file_exists($temp)) {
            unlink($temp);
            return dirname($temp);
        }
        return null;
    }
}
 
 
 
 
함수 젤 상단에 위에 함수를 정의 하는 부분을 넣어주시면 됩니다.

관련자료

등록된 댓글이 없습니다.
Today's proverb
유쾌한 사람은 자기 일에만 몰두하는 사람이 아니다. 때론 자신의 일을 전부 제쳐놓고 타인의 문제에 전력을 쏟는 열정이 있는 사람이다. 타인에게 자신의 힘을 나누어주고 마음을 열어주는 것은 자신의 삶을 행복하게 만드는 방법이다.