Sponsored Link

どうにかなるBLOG

PHP GDライブラリで画像のサムネイルを作成

PHPが使えるなら、大体どこのレンタルサーバーでもGDライブラリくらいは用意してる。こいつを使えば、画像のサイズ変更が簡単にできて、例えば携帯用の画像をサイズをその場で縮小して表示とか、アップロードした写真データのサムネイルファイルを一発で作成とか。

引っ越し先:http://dounikanarub...


とまぁ、偉そうに言いながら実は、さっき初めて触ったばかりなんだけど(笑)、
ちょっといじってみた感触を忘れないうちにメモっておくよ。

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);

意外と簡単に使えるもんだね。
posted at 04:33:11 on 2006-02-06 by バカ梵 - Category: PHP

TrackBack

Trackback URL

[PHP][SAKURA][MYSQL] mk18のプログラミング日記 pinged on 2009-02-08

前回は添付ファイルを保存するところまでが出来ました。 今回は以下のことを実装しました。 ・保存したファイル(jpg)を特定のフォルダーに保存。 ・タイムスタンプ、送信元メールアドレス、ファイル名をデータベー...

Comments

じろう wrote:

ありがとう参考になった。

でも、ブラウザに出力したりファイルに保存したりするときの引数は、$new_image じゃないかな?
2007-11-26 16:54:28

alaska wrote:

ほんとだ。。
2008-01-14 06:03:30

Add Comments

:

:
: