php > 내가 만들어 쓰는 함수 > 종합 썸네일 함수 만들기 1 > 개발자팁

개발자팁

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

php > 내가 만들어 쓰는 함수 > 종합 썸네일 함수 만들기 1 정보

PHP php > 내가 만들어 쓰는 함수 > 종합 썸네일 함수 만들기 1

첨부파일

image_proc.function.php (23.0K) 77회 다운로드 2010-02-27 01:42:42
test16.php (8.9K) 11회 다운로드 2010-02-27 01:42:42

본문

대단할것은 없는 강좌이지만,
제 강좌를 출처를 밝히고 외부로 퍼가는 것은 허용하지만, 다른 강좌의 자료나 책의 자료로 사용되거나 부분적인 인용은 허용하지 않습니다.

강좌는 php 5. 대를 기준으로 하며, 기본적으로 GD 나 FREETYPE 등의 기본적인 라이브러리는 연동되었다는 가정하에 진행합니다.
예전 개발 환경에서는 GD 나 FREETYPE 등의 연동여부나 php버젼들을 따졌지만, 요새 개발 환경에서는 대부분 기본적으로 다 제공하기 때문에 그렇습니다.

php > 내가 만들어 쓰는 함수 > 종합 썸네일 함수 만들기 1

이전까지는 이미지의 리사이즈, 크롭, 워터마크에 대해 다루었습니다.
이번에는 이전에 다ㅤㄹㅝㅅ던 내용을 모두 포함하는 종합적인 썸네일 함수를 만들어 보겠습니다.

물론, 이번에 만드는 것이 최종 완성판은 아니며, 나중에 내용을 더 진행하면 수정 보완됩니다.

함수를 만들기 이전에 이함수가 어떤 처리를 하는지 대략적인 정리를 해보고자 합니다.

처리과정>
1. 처리에 필요한 기본값을 정의합니다.
2. 원본 파일로 부터 이미지 리소스를 생성합니다.
3. 크롭사용 여부에 따라 크롭이나 리사이즈 처리를 한 썸네일의 리소스를 생성합니다.
4. 워터마크 이미지가 존재한다면 워터마크를 조건에 따라 처리합니다.
5. 지정된 경로로 썸네일을 저장합니다.


위의 처리과정대로 함수를 만들기 위해서는 많은 인자를 필요로 합니다.
하지만, 항상 필요한 인자들은 아닙니다. 경우에 따라 필요할수도 있고 없을수도 있습니다.
그래서 함수의 인자는 최대한 간략한 형태로 하고, $options 배열 인자를 두어 사용에 필요한 인자는 배열을 통해서 받도록 처리하였습니다.

예제1 : thumnail_test1 을 image_proc.function.php 에 추가

function thumnail_test1($path_src_file, $path_save_file, $save_w, $save_h=0, $options=Array()){

//기본값 설정
$save_quality = 70;//저장 품질 : 70 %
$save_force = 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

//기본값 재설정
if (!empty($options)) @extract($options);

//원본 리소스 생성
list($src, $src_w, $src_h) = get_image_resource_from_file ($path_src_file);
if (empty($src)) return false;

//리사이즈 또는 크롭 리사이즈
if ($crop_use == 1) {//크롭 리사이즈

$dst = get_image_cropresize($src, $src_w, $src_h, $save_w, $save_h, $crop_pos_width, $crop_pos_height);
}
else {//리사이즈

$dst = get_image_resize($src, $src_w, $src_h, $save_w, $save_h);
}

@imagedestroy($src);
if (empty($dst)) return false;

//워터마크 이미지가 파일일 경우, 워터마크 처리
if (!empty($watermark_path_file) && is_file($watermark_path_file)) {

$result_watermark = proc_watermark($dst, $save_w, $save_h, $watermark_path_file, $watermark_pos, $watermark_sharpness, $watermark_padding);

if (empty($result_watermark)) return false;
}

$result_save = save_image_from_resource ($dst, $path_save_file, $save_quality, $save_force);

@imagedestroy($dst);

return $result_save;
}


함수 내용을 보면 처리해야 할 내용에 비해 아주 간단합니다. 이유는 이미 세부적인 처리를 하는 부분은 함수로 다 만들어 두었기 때문에 이 함수 내에서는 그 함수들을 사용만 하면 되기 때문입니다.

$save_quality = 70;//저장 품질 : 70 %
$save_force = 2;//저장형태 : 파일 덮어씌움

이것은 저장과 관련된 기본값입니다.

$save_quality 는 저장 품질을 결정 짓는 변수입니다. 이전에 만든 save_image_from_resource 함수의 $quality 변수와 동일합니다. 기본값은 70 으로 주었습니다.

$save_force 는 동일 경로상에 동일한 이름의 파일이 존재할 경우에 대처방향을 변수로 저장하는 것입니다. 물론 이것역시 save_image_from_resource 함수의 $save_force 변수와 동일합니다. 0일 경우 return false, 1일 경우 return true, 2일 경우 기존 파일을 삭제하고 새로 저장을 합니다. 기본값은 2 파일 덮어씌움으로 주었습니다.

$crop_use = 0;//크롭 사용여부
$crop_pos_width = 2;//너비 기준 크롭시 중앙을 기준
$crop_pos_height = 1;//높이 기준 크롭시 상단을 기준

이것은 크롭과 관련된 기본값입니다.
$crop_use 는 크롭을 사용할지를 결정짓는 변수입니다. 0 일 경우에는 사용하지 않고, 1일 경우에는 사용합니다. 기본값은 0으로 주었습니다.

$crop_pos_width 는 너비 기준으로 크롭을 하게 되었을때 너비중 어디를 기준으로 크롭을 할것인가를 결정짓는 변수입니다. 1일 경우에는 왼쪽, 2일 경우에는 중앙, 3일 경우에는 오른쪽을 기준으로 크롭을 실행합니다.

$crop_pos_height 는 높이 기준으로 크롭을 하게 되었을때 높이중 어디를 기준으로 크롭을 할것인가를 결정짓는 변수입니다. 1일 경우에는 상단, 2일 경우에는 중단, 3일 경우에는 하단을 기준으로 크롭을 실행합니다.

여기에 설정된 $crop_pos_width 과 $crop_pos_height 는 get_image_cropresize 함수의 $pos_width, $pos_height 와 동일합니다.

$watermark_path_file = '';//워터마크로 사용할 파일 경로 : 없음
$watermark_pos = 4;//워터마크 찍는 위치 : 하단 오른쪽
$watermark_sharpness = 30;//워터마크 이미지의 선명도 : 30 %
$watermark_padding = 10;//원본과 워터마크 사이의 여백 : 10px

이것은 워터마크와 관련된 기본값입니다.
모두 proc_watermark 함수의 $path_mark_file, $pos, $sharpness, $padding 과 동일합니다.
가장 최근에 다른 내용이므로 별도의 설명은 하지 않겠습니다.

워터마크처리 의 경우는 $watermark_path_file 로 설정된 값이 존재하는 파일 일 경우에만 실행됩니다.
기본값이 빈값이기 때문에 워터마크처리를 하기위해선 $options['watermark_path_file'] = '워터마크 파일의 경로'; 와 같이 설정하고 넘겨 주어야 합니다.

나머지 기본값들의 변경 역시 $options['변수명'] = '값'; 을 통하여 기본값을 변경할수가 있습니다.

사실, 이러한 부분은 클래스로 만들어서 하면 좀 더 깔끔하고 사용하기도 나아보입니다. 하지만, 강좌의 난이도도 있고 또 php4와 php5 의 클래스 문법차이가 심하기 때문에 더 혼란을 가져올수도 있는 부분이 있습니다. 나중에 클래스 강좌를 하게 된다면 썸네일 클래스를 다뤄보도록 하겠습니다.


아래의 예제를 확인하여 이 썸네일 함수의 사용법을 익혀보도록 합니다.

예제2 : test16.php

<?php

//이미지 처리 함수 인클루드
include_once 'lib/image_proc.function.php';

$path_src_file = 'sample_image/test.jpg';//원본파일
$path_mark_file ='sample_image/php.png';//워터마크에 사용할 파일
$path_400X0_file = 'sample_image/test_400X0.jpg';//원본파일을 너비 400으로 정비율 리사이즈

//원본을 너비 400 정비율 리사이즈, $path_400X0_file 에 기본 저장 옵션
$save_w = 400;

$result = thumnail_test1($path_src_file, $path_400X0_file, $save_w);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w 으로 정비율 리사이즈 <br />
<img src='$path_400X0_file'> <br /><br />
";
flush();

//$path_400X0_file을 높이 200 정비율 리사이즈, 저장시 quality 10%로 저장
$save_w = 0;
$save_h = 200;

$options = Array();//옵션설정
$options['save_quality'] = 10;

$path_save_file = 'sample_image/test_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
높이 $save_h 으로 정비율 리사이즈, 저장시 quality 10% <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 강제 리사이즈, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$path_save_file = 'sample_image/test_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이 $save_h 강제 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 100 크롭 리사이즈, 기본 저장 옵션
$save_w = 300;
$save_h = 100;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함
$options['crop_pos_height'] = 1;

$path_save_file = 'sample_image/test_crop_top_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 상단 크롭 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 100 크롭 리사이즈, 기본 저장 옵션
$save_w = 300;
$save_h = 100;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함
$options['crop_pos_height'] = 2;

$path_save_file = 'sample_image/test_crop_middle_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 중단 크롭 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 100 크롭 리사이즈, 기본 저장 옵션
$save_w = 300;
$save_h = 100;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함
$options['crop_pos_height'] = 3;

$path_save_file = 'sample_image/test_crop_bottom_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 하단 크롭 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 200, 높이 300 크롭 리사이즈, 기본 저장 옵션
$save_w = 200;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함
$options['crop_pos_width'] = 1;

$path_save_file = 'sample_image/test_crop_left_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 왼쪽 크롭 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 200, 높이 300 크롭 리사이즈, 기본 저장 옵션
$save_w = 200;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함
$options['crop_pos_width'] = 2;

$path_save_file = 'sample_image/test_crop_center_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 중앙 크롭 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 200, 높이 300 크롭 리사이즈, 기본 저장 옵션
$save_w = 200;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함
$options['crop_pos_width'] = 3;

$path_save_file = 'sample_image/test_crop_right_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 오른쪽 크롭 리사이즈 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 크롭 리사이즈, 워터마크 사용, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함

$options['watermark_path_file'] = $path_mark_file;//워터마크 이미지
$options['watermark_pos'] = 1;

$path_save_file = 'sample_image/test_mark_top_left_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 크롭 리사이즈, 상단 왼쪽 워터마크 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 크롭 리사이즈, 워터마크 사용, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함

$options['watermark_path_file'] = $path_mark_file;//워터마크 이미지
$options['watermark_pos'] = 2;

$path_save_file = 'sample_image/test_mark_top_right_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 크롭 리사이즈, 상단 오른쪽 워터마크 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 크롭 리사이즈, 워터마크 사용, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함

$options['watermark_path_file'] = $path_mark_file;//워터마크 이미지
$options['watermark_pos'] = 3;

$path_save_file = 'sample_image/test_mark_bottom_left_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 크롭 리사이즈, 하단 왼쪽 워터마크 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 크롭 리사이즈, 워터마크 사용, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함

$options['watermark_path_file'] = $path_mark_file;//워터마크 이미지
$options['watermark_pos'] = 4;

$path_save_file = 'sample_image/test_mark_bottom_right_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 크롭 리사이즈, 하단 오른쪽 워터마크 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 크롭 리사이즈, 워터마크 사용, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함

$options['watermark_path_file'] = $path_mark_file;//워터마크 이미지
$options['watermark_pos'] = 5;

$path_save_file = 'sample_image/test_mark_middle_center_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 크롭 리사이즈, 중앙 워터마크 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

//$path_400X0_file을 너비 300, 높이 300 크롭 리사이즈, 워터마크 사용, 기본 저장 옵션
$save_w = 300;
$save_h = 300;

$options = Array();//기본옵션
$options['crop_use'] = 1;//크롭 사용함

$options['watermark_path_file'] = $path_mark_file;//워터마크 이미지
$options['watermark_pos'] = 10;

$path_save_file = 'sample_image/test_mark_all_' . $save_w . 'X' . $save_h . '.jpg';

$result = thumnail_test1($path_400X0_file, $path_save_file, $save_w, $save_h, $options);
if (empty($result)) die($GLOBALS['errormsg'] . "<br />\n");

echo "
너비 $save_w, 높이$save_h 크롭 리사이즈, 전체 워터마크 <br />
<img src='$path_save_file'> <br /><br />
";
flush();

?>


이상으로 이미지 썸네일 처리에 대한 1차적인 내용은 마칩니다.

앞으로 진행될 내용은 이미지에 점을 찍거나 선을 긋거나 박스를 그리거나 박스안에 색을 집어넣거나 하는등의 처리를 다루어 볼까 합니다.


[이 게시물은 관리자님에 의해 2011-10-31 17:16:08 PHP & HTML에서 이동 됨]
추천
4

댓글 25개

function thumnail_test1($path_src_file, $path_save_file, $save_w, $save_h=0, $options=Array()){


유창화님의 수고에 감사드립니다.


이 소스의 마지막부분 사용자가 사용하는 부분입니다.

1.
워터마크까지 사용한다면 이것이 최종본인가요?
(thumnail_test1 이라는 미완을 나타내는 단어를 사용한 것 같아서요...)

2.
save_force 에서 ---0 이면 false 반환 --- 이란 뜻이 무엇인가요?

3.
both- 이라던가 both+ 의 형태는 더이상 사용하지 않는가요?
아주 힘들지 않는 문제라면 이것도 넣어주세요...^^;
많이 사용하진 않지만 요긴하더군요.
네 일단 워터마크 까지는 최종본입니다.

나중에 추가 기능이 진행되면 더 보강되기 때문에 test라고 함수명에 붙었습니다.

save_force 가 0 일때 false를 반환 한다는 뜻은

정상적인 경우라면 상관없는 부분이고, 만약 만들려고 하는 썸네일의 파일경로에
이미 파일이 같은 이름으로 존재할때의 처리 여부를 나타내는 옵션입니다.

이때 false 를 반환한다는 말은 더이상 진행하지 않고 에러로 처리한다는 뜻입니다.

1일 경우에는 더이상 진행하지 않고 성공으로 처리한다는 뜻입니다.

2일 경우에는 무조건 새로 덮어 씌운다는 말입니다.

both- both+ 는 이번에 빼기로 결정했습니다.

이유는 현재의 함수는 크롭을 실해할시 여백없이 최대한의 영역을 크롭하여 보여주게끔 되어있으므로 그렇습니다.

제가 이번에 진행하는 강좌의 함수에서는 여백이 생기는 부분을 사용하지 않으므로 적용할수 없는 부분입니다.
워터마크가 정상적인게 맞구요

워터마크에 사용될 이미지를 투명이미지로 사용할수는 없습니다.

투명이미지를 사용할려면 워터마크의 선명도 주는 부분을 포기해야 합니다.
그러면 항상 사각형의 워터마크를 사용해야 하는가요?
(제가 워터마크만드는 기술을 모릅니다.)

1.2.3. 도 답변부탁드립니다.
네 이미지는 투명한부분을 사용하지 않는다면 기본적으로 사각형입니다.

투명을 사용할수 없는대신 워터마크의 선명도를 조정할수 있는것입니다.
일반적으로 사각형을 워터마크하기는 싫어할 것 같습니다.
저라면 투명도를 포기할 것 같습니다.

투명도를 포기하려면 소스를 크게 손봐야 하는가요?
워터마크의 투명이미지 사용같은건 나중에 함수에 옵션을 추가하여 투명이미지 사용할경우에는
선명도를 포기하고 워터마크 사용할수 있도록 선택적으로 하는건 가능할듯하네요.

아무튼 그렇습니다.
$options ['watermark_sharpness'] = 90;

기본설정에도 나와있어서 옵션으로만은 해결이 안되겠는대요..

http://ongga.com/test16.php
옵션설정을 빼도 마찬가지입니다.
ㅎㅎㅎ

네 $options ['watermark_sharpness'] = 90; 이것은 사용자가 필요에 따라 변경할수는 있는 내용입니다.

제가 좀 일일이 설명을 드리기에는 한계를 느끼고 나중에 후에 투명이미지가 사용가능하게 수정되면 그때 다시 말씀을 나누기로 하시죠.
나중에 함수에 옵션을 추가하여 투명이미지 사용할경우에는
선명도를 포기하고 워터마크 사용할수 있도록 선택적
-------------
이부분이 잘 되었으면 합니다.
리스트에서
if ($list[$i]['file'][0]['file']){

$image = $list[$i]['file'][0]['file'];  //첫번째 이미지 파일로 지정

if (preg_match("/\.(jp[e]?g|gif|png)$/i", $image)){

$path_src_file = $data_path . '/' . $image;

$thumb = "$thumb_path" . '/' . $save_w . 'X' . '.jpg';

if (!file_exists($thumb)){
$thumb = thumnail_test1($path_src_file, $thumb, $save_w);
}
}
}

했더니


http://ongga.com/bbs/board.php?bo_table=basicU_N

처럼 나옵니다.

http://ongga.com/bbs/board.php?bo_table=exem_siha
처럼나와야 정상인대요.

썸이름설정하는 것을 어떻게 해야 정확한 것인가요?
이미지 이름이야 짓기 나름이겠지만
이런경우에는

if ($list[$i]['file'][0]['file']){

  $image = $list[$i]['file'][0]['file'];  //첫번째 이미지 파일로 지정

  if (preg_match("/\.(jp[e]?g|gif|png)$/i", $image)){

    $path_src_file = $data_path . '/' . $image;

    $path_info = pathinfo($path_src_file);

    $thumb = $path_info['dirname'] . '/' . $path_info['filename'] . '_' . $save_w . 'X' . $save_h . '.' . $path_info['extension'];

    if (!file_exists($thumb)){

      $thumb = thumnail_test1($path_src_file, $thumb, $save_w);// 너비기준으로 정비율 리사이즈 썸네일 저장
    }
  }
}

이렇게 하면 되겟죠
크랍을 사용해야만 워터마크가 보입니다.
크랍을 사용하지 않을 때에는 그림이 폭만유지되고 높이는 거의 제로상태가 됩니다.

크랍을 사용해야만 워터마크가 가능한가요?
이함수 저함수 다 대입해도 크랍설정 없이는 워터마크가 작동이 안됩니다.

워터마크는 넓이와 높이가 다 있어야만 작동합니다.
전체 64
개발자팁 내용 검색

회원로그인

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