JPGやPNGのサムネイルを表示するPHPプログラムのサンプル(GDライブラリを使用)
JPGやPNG形式の画像をサムネイル表示するPHPプログラムを作ったのでその記録。
画像処理にはGDライブラリを使用するので、GDが使用可能かどうかを事前に調べておく。
適当なファイル(例:info.php)を作って、下記の内容を書き込む。
<?php phpinfo(); ?>
適当なファイル(例:info.php)をサーバーにアップロードして、ブラウザからアクセスする。
するとPHPの設定が表示されるので、GDの項目が「enable」になっていることを確認する。
「enable」になっていない場合は、自力でぐぐってGDライブラリをインストールしておくこと。
さて、サムネイルを表示するPHPのサンプル(例:thumbnail.php)は次の通り。
<?php ini_set("gd.jpeg_ignore_warning", 1); $width = 150; // 画像横幅を指定 $url = "https://s.yimg.jp/images/top/sp2/cmn/logo-170307.png"; // 画像URLを指定 list($image_w, $image_h) = getimagesize($url); $proportion = $image_w / $image_h; $height = $width / $proportion; if($proportion < 1){ $height = $width; $width = $width * $proportion; } if(strpos($url, '.png') !== false) { $image = imagecreatefrompng($url); header('Content-type: image/png'); } else { $image = imagecreatefromjpeg($url); header('Content-type: image/jpeg'); } $canvas = imagecreatetruecolor($width, $height); imagecopyresampled($canvas, $image, 0, 0, 0, 0, $width, $height, $image_w, $image_h); imagejpeg($canvas, NULL, 100); imagedestroy($canvas);
ポイントは1行目の「gd.jpeg_ignore_warning」だろう。
これを指定しておくことで、ファイルサイズが大きなJPGでも警告を無視して表示できるようになる。
あとは画像ヘッダーの指定かな。
「Content-type: image/png」もしくは「Content-type: image/jpeg」を適宜指定するようにしておく。
画像形式によらず、imagejpeg関数でOKなのはちょっと驚き。
さて、このサムネイル表示プログラム(例:thumbnail.php)をHTMLから呼び出すには、次のように記述する。
<img src="thumbnail.php">
以上、お疲れ様でした。