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">
元画像