웹솔루션개발 22년 노하우! 해피CGI의 모든것

[해피CGI][cgimall][GD] 고화질,이미지 비율 유지의 썸네일을 만들어보자 본문

웹프로그램밍 자료실/알짜자료 골드팁

[해피CGI][cgimall][GD] 고화질,이미지 비율 유지의 썸네일을 만들어보자

해피CGI윤실장 2017. 2. 20. 09:28
해피CGI 입니다.
php 프로그래머로 전향중  땀~  php 자체 기능인 썸네일을 사용하게 되면
gif,jpg,png 모두 화질이 상당히 떨어지는걸 알게되었지요.
아래 주소 참고.
http://forum.happycgi.com/board_detail.cgi?db=gold_tip&thread=5007

위 주소에 그림을 보면 상당히 그림이 희미하거나 색상이 변질된걸 볼수 있습니다.

우선 잘못된 썸네일을 만드는 방법입니다.  멍듦~


[프로그램코드]
<?php
//이미지 사이즈를 구해서 100픽셀을 기준으로 퍼센트를 구한다.
// 100 픽셀은 썸네일 가로이미지가 되고
// 세로는 원본비율에 맞게 구한다.
$gi_joon = "100";
$imagehw = GetImageSize("test.jpg");
$imagewidth = $imagehw[0];
$imageheight = $imagehw[1];
$new_height = $imageheight * $gi_joon / $imagewidth ;
$new_height=ceil($new_height);
$new_width = $gi_joon;

//php 기본 함수를 사용해서 썸네일을 만든다.
$src = ImageCreateFromJPEG("test.jpg");
$thumb = ImageCreate($new_height,$new_width);
ImageCopyResized($thumb,$src,0,0,0,0,$new_width,$new_height,ImageSX($src),ImageSY($src));
ImageJPEG($thumb,"thumb/test.jpg");  // thumb 라는 폴더에 test.jpg 라는 썸네일을 만든다.
ImageDestroy($thumb);
?>



해보시면 아시겠지만
상당히 퀄리티가 떨어지는 썸네일이 만들어집니다.
http://www.php.net 에 보면
ImageJPEG($thumb,"thumb/test.jpg");
라는 옵션에
ImageJPEG($thumb,"thumb/test.jpg",100);
과 같은 방식으로 퀄리티를 조절할수 있다고 되어있지만
실상 통하지 않습니다. (php 버젼이나 GD 라이브러리에 따라서 다름)

올바른 코드를 봅니다.  



[프로그램코드]
<?php

//이미지 사이즈를 구해서 100픽셀을 기준으로 퍼센트를 구한다.
// 100 픽셀은 썸네일 가로이미지가 되고
// 세로는 원본비율에 맞게 구한다.
$gi_joon = "100";
$imagehw = GetImageSize("test.jpg");
$imagewidth = $imagehw[0];
$imageheight = $imagehw[1];

$new_height = $imageheight * $gi_joon / $imagewidth ;

$new_height=ceil($new_height);
$new_width = $gi_joon;

$src = ImageCreateFromJPEG("test.jpg");
$thumb = ImageCreate($new_width,$new_height);

$thumb = imagecreatetruecolor($new_width,$new_height);
imagecopyresampled($thumb,$src,0,0,0,0,$new_width,$new_height,imagesx($src),imagesy($src));
ImageJPEG($thumb,"thumb/test.jpg");
ImageDestroy($thumb);
?>



좋은 하루되세요.

 

홈페이지바로가기 

Comments