PHPが使えるなら、大体どこのレンタルサーバーでもGDライブラリくらいは用意してる。こいつを使えば、画像のサイズ変更が簡単にできて、例えば携帯用の画像をサイズをその場で縮小して表示とか、アップロードした写真データのサムネイルファイルを一発で作成とか。
とまぁ、偉そうに言いながら実は、さっき初めて触ったばかりなんだけど(笑)、
ちょっといじってみた感触を忘れないうちにメモっておくよ。
GDを使った目的は画像の縮小。
実は前の記事でファイルのアップロードの仕方をメモったんだけど、
アップロードしたファイルの縮小ファイルを作るのにGDを使った。
んじゃまずは画像の読み込みから
$file_path = "ファイルパスまたはURL";
$image = ImageCreateFromJPEG($file_path); //JPEGファイルを読み込む
$image = ImageCreateFromGIF($file_path); //GIFファイルを読み込む
$image = ImageCreateFromPNG($file_path); //PNGファイルを読み込む
ファイルの種類によって読み込むための関数が違う。
もしどうしてもファイルの種類が分からないなら、getImageSize($file_path) とか
使うといいかもね。俺は使った事無いけど(笑)。
PHPマニュアル:getimagesize
読み込んだ画像のサイズは、
$width = ImageSX($image); //横幅(ピクセル)
$height = ImageSY($image); //縦幅(ピクセル)
で取得。目的に応じて、縮小した画像のサイズを決める。
例えば、幅を100ピクセルに固定したいなら、
$new_width = 100;
$rate = $new_width / $width; //圧縮比
$new_height = $rate * $height;
みたいにね。
次に空の画像を作成
$new_image = ImageCreateTrueColor($new_width, $new_height);
作成した空の画像に、リサイズした画像をコピー
ImageCopyResized($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height);
もしくは、サンプリングし直してコピーした方が画像はきれいかも
ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height);
これで一応、縮小画像が作成された。
あとは、ブラウザに出力したり
ImageJPEG($new_image);
ImageGIF($new_image); //環境によっては使えない
ImagePNG($new_image);
ファイルに保存したり
ImageJPEG($new_image, $file_path, 70); //3つ目の引数はクオリティー(0〜100)
ImageGIF($new_image, $file_path); //環境によっては使えない
ImagePNG($new_image, $file_path);
意外と簡単に使えるもんだね。