PHP GDによる画像の拡大と縮小

ImageCopyResampledを利用すると、画像の拡大/縮小ができます。 例えば、大きな画像のサムネイルをCMSで自動的に作る時などに利用できます。

ImageCopyResizedを利用した画像の拡大と縮小も可能ですが、出来上がる絵が粗くなります。 ImageCopyResizedは単純な方法で拡大縮小を行いますが、ImageCopyResampledはピクセルの補間を行って仕上がりをスムーズにします。 処理コストはImageCopyResizedの方が低く、高速になります。



bool
ImageCopyResampled(resource $dst_image, resource $src_image,
    int $dst_x, int $dst_y, int $src_x, int $src_y,
    int $dst_w, int $dst_h, int $src_w, int $src_h )

bool
ImageCopyResized(resource $dst_image, resource $src_image,
    int $dst_x, int $dst_y, int $src_x, int $src_y,
    int $dst_w, int $dst_h, int $src_w, int $src_h )


サンプルコード

以下のサンプルでは、ImageCopyResampledを利用して画像の縦と横を半分の大きさに縮小しています。 サンプルコードの比率を変更すると拡大も可能です。



<?php
$img = ImageCreateFromJPEG('sample0.jpg');

$width = ImageSx($img);
$height = ImageSy($img);

$out = ImageCreateTrueColor($width/2, $height/2);
ImageCopyResampled($out, $img,
    0,0,0,0, $width/2, $height/2, $width, $height);

header('Content-Type: image/jpeg');
ImageJPEG($out);
?>


動作例



<img src="script/resize1.php">



元画像