본문 바로가기

Web Progreming/PHP

[ PHP ] ImageCopyResized, imagecopyresampled, 섬네일 만들기

ImageCopyResized     썸네일 생성의 핵심이 되는 구문입니다   

기능 : 원본이미지로부터 타겟이미지로 이미지를 복사합니다.

         이때 사이즈나 위치를 지정해 줍니다. 썸네일 생성의 핵심이 되는 구문입니다
구문 :  ImageCopyResized(resource dst_im, resource src_im, int dstX, int dstY,

                                            int srcXint 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"10080"");
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==$img_sour = imagecreatefromjpeg($source_file);
    else if ($type==$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_last00$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_file100);
        else if ($type==) imagejpeg($img_last$object_file100);
        else if ($type==) imagepng($img_last$object_file100);
        else if ($type==15) imagebmp($img_last$object_file100);
    else {
        if ($type==1) imagegif($img_last);
        else if ($type==) imagejpeg($img_last);
        else if ($type==) 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