PNG画像をアップロードし、横幅120px(縦幅は自動的に決定される)のサムネイルを作成してみよう。
元画像
この画像をアップロードするための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>
するとこうなる。
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 — 画像の一部をコピーしサイズを変更する
いまいち違いが分からない。
で、実際に出来た画像はこれ。