ImageCopyResized 썸네일 생성의 핵심이 되는 구문입니다
기능 : 원본이미지로부터 타겟이미지로 이미지를 복사합니다.
이때 사이즈나 위치를 지정해 줍니다. 썸네일 생성의 핵심이 되는 구문입니다.
구문 : ImageCopyResized(resource dst_im, resource src_im, int dstX, int dstY,
int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);
속성 :
dst_im = 원본이미지를 복사할대상 이미지를 가리키는 식별자
src_im = 원본이미지를 가리키는 식별자
srcX, srcY = 복사하고자하는 원본 이미지 영역의 상단좌측의좌표를 가리키는 식별자
srcW, srcH = 그좌표로 부터 복사할 부분의 가로,세로크기를 결정하는 인자
dstX, dstY, dstW, dstH 원본이미지로부터 가져온 이미지를 대상이미지에 복사할때 그위치및 복사할 가로세로크기를 지정하는 인자
imagecopyresampled
기능 : ImageCopyResized와 같은 기능을 하지만 더 나은 퀄리티를 제공 합니다.
패치 안된 GD버젼에서는 원하는 위치를 복사하는 기능이 제대로 작동하지 않을수 있습니다.
구문 : ImageCopyResampled(resource dst_im, resource src_im, int dstX, int dstY, int srcX, int srcY, int dstW, int dstH, int srcW, int srcH);
예제)
부드러운 PNG 썸네일 만들기
<?
$im = ImageCreateFromPNG($dirfile);
imagealphablending($dst_img, false);
imagecopyresampled($dst_img, $im, 0, 0, 0, 0, $new_w, $new_h, $width, $height);
imagesavealpha($dst_img, true);
imagePNG($dst_img, $thumbdirfile,0);
?>
<?
make_thumbnail("http://hompy.info/attach/1/1166220204.jpg", 100, 80, "");
function make_thumbnail($source_file, $_width, $_height, $object_file){
list($img_width,$img_height, $type) = getimagesize($source_file);
if ($type==1) $img_sour = imagecreatefromgif($source_file);
else if ($type==2 ) $img_sour = imagecreatefromjpeg($source_file);
else if ($type==3 ) $img_sour = imagecreatefrompng($source_file);
else if ($type==15) $img_sour = imagecreatefromwbmp($source_file);
else return false;
if ($img_width > $img_height) {
$width = round($_height*$img_width/$img_height);
$height = $_height;
} else {
$width = $_width;
$height = round($_width*$img_height/$img_width);
}
if ($width < $_width) {
$width = round(($height + $_width - $width)*$img_width/$img_height);
$height = round(($width + $_width - $width)*$img_height/$img_width);
} else if ($height < $_height) {
$height = round(($width + $_height - $height)*$img_height/$img_width);
$width = round(($height + $_height - $height)*$img_width/$img_height);
}
$x_last = round(($width-$_width)/2);
$y_last = round(($height-$_height)/2);
if ($img_width < $_width || $img_height < $_height) {
$img_last = imagecreatetruecolor($_width, $_height);
$x_last = round(($_width - $img_width)/2);
$y_last = round(($_height - $img_height)/2);
imagecopy($img_last,$img_sour,$x_last,$y_last,0,0,$width,$height);
imagedestroy($img_sour);
$white = imagecolorallocate($img_last,255,255,255);
imagefill($img_last, 0, 0, $white);
} else {
$img_dest = imagecreatetruecolor($width,$height);
imagecopyresampled($img_dest, $img_sour,0,0,0,0,$width,$height,$img_width,$img_height);
$img_last = imagecreatetruecolor($_width,$_height);
imagecopy($img_last,$img_dest,0,0,$x_last,$y_last,$width,$height);
imagedestroy($img_dest);
}
if ($object_file) {
if ($type==1) imagegif($img_last, $object_file, 100);
else if ($type==2 ) imagejpeg($img_last, $object_file, 100);
else if ($type==3 ) imagepng($img_last, $object_file, 100);
else if ($type==15) imagebmp($img_last, $object_file, 100);
} else {
if ($type==1) imagegif($img_last);
else if ($type==2 ) imagejpeg($img_last);
else if ($type==3 ) imagepng($img_last);
else if ($type==15) imagebmp($img_last);
}
imagedestroy($img_last);
return true;
}
?>
'Web Progreming > PHP' 카테고리의 다른 글
[ PHP ] 파일 다운로드 (0) | 2011.02.15 |
---|---|
[ PHP ] GD Library (0) | 2011.01.24 |
[ PHP ] ImageCreateTrueColor, ImageCreate (1) | 2011.01.21 |
[ PHP ] $_SERVER (0) | 2011.01.13 |
[ PHP ] IME-MODE (CSS & STYLE) (0) | 2010.12.26 |