2008/05/30

PHP 2 Thumbnail

PNG画像をアップロードし、横幅120px(縦幅は自動的に決定される)のサムネイルを作成してみよう。

oita
元画像

 

この画像をアップロードするためのHTML

<form action="img.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
  <label>
  <input type="file" name="imgUP" id="imgUP" />
  <br />
  </label>
  <input name="ok" type="submit" value="決定" />
</form>

するとこうなる。

1 

safariだとちょっと表示方法が違うけど、IEやFirefoxならおなじみの参照ダイアログ

 

で、PHP。

今回も絶賛コピペ中

【PHP】GDライブラリを使って画像のサムネイルを作成する。
http://goodjob.boy.jp/chirashinoura/id/79.html

<?php
    $file_path = $_FILES["imgUP"]["tmp_name"];
    $image = imagecreatefrompng($file_path);
    $width = ImageSX($image);
    $height = ImageSY($image);
    $new_width = 120;
    $rate = $new_width / $width; //圧縮比
    $new_height = $rate * $height;
    $new_image = ImageCreateTrueColor($new_width, $new_height);
    ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height);
    imagepng($new_image,"sample.png");
    imagedestroy($new_image);
    $html='<html><body><img src="sample.png"></body></html>';
    echo $html;
?>

ファイル選択の際は$_FILESと言うのを使うらしい。

PHPリファレンス($_FILES、@move_uploaded_file())
http://www.php-ref.com/web/03_move_uploaded_file.html

 

画像の横幅はimagesx(ファイル)を使う

imagesx
http://phpspot.net/php/man/php/function.imagesx.html

これ以外にもgetimagesize()というのがあり、これはリストで返してくれる。

PHP関数講座:getimagesize -- そふぃのphp入門
http://nyx.pu1.net/function/image/getimagesize.html

 

画像の再サンプリングの部分にはimagecopyresampled()を用いる。

再サンプリングを行いイメージの一部をコピー、伸縮する
http://zapanet.info/phpdoc/function.imagecopyresampled.html

 

ImageCopyResampled — 再サンプリングを行いイメージの一部をコピー、伸縮する
ImageCopyResized — 画像の一部をコピーしサイズを変更する

いまいち違いが分からない。

 

で、実際に出来た画像はこれ。

sample