imagecopyresampledでの画像リサイズ

PHPで画像リサイズを行うときimagemgick関数を使っていたが、GDライブラリでも簡単にリサイズできることが分かった。

PHP: imagecopysampled – Manual

※サンプル関数

function resizeImage($src, $dist, $tw, $th)
{
        $percent = 1;
        list($width, $height, $type, $attr) = getimagesize($src);
        if ($type != 1 && $type != 2){
                return false;
        }
        if ($width < = $tw && $height <= $th){
                copy($src, $dist);
                return true;
        }
        if ($width > $height){
                if ($width > $tw){
                        $percent = $tw / $width;
                }
        }
        else{
                if ($height > $th){
                        $percent = $th / $height;
                }
        }
        $newwidth = $width * $percent;
        $newheight = $height * $percent;

        if ($type == 1){
                $source = imagecreatefromgif($src);
                $thumb = imagecreatetruecolor($newwidth, $newheight);
                imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                imagegif($thumb, $dist, 100);
        }
        else{
                $source = imagecreatefromjpeg($src);
                $thumb = imagecreatetruecolor($newwidth, $newheight);
                imagecopyresampled($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);
                imagejpeg($thumb, $dist, 100);
        }
        return true;
}

GDライブラリの方がインストールも容易であり一般的なので、今後はGD関数を使うことにした。

GDインストール手順

カテゴリー: 技術関連 パーマリンク