またしてもphp。
サムネイル作りたい
ファイルをサーバーにアップロードしてもらったときに、
自動でサムネイル画像作れたらいいなーと思っていろいろ調べてみると、
どうやらGDライブラリというのを使うとphpで画像を扱えるらしい。
ということで、コード書いてみました。
まずはGDのインストール
UbuntuServer10.04の場合
sudo apt-get install php5-gd
としてから、apacheを再起動すればOK
ちゃんとインストールできたかどうかは、
<?php phpinfo(); ?>
と書いたphpファイルを作って、ブラウザで開き
GDの項目があるか確認すればOK
pngを縮小するサンプルコード
他ページのアップロードフォームから送信されたこと前提で。
<?php // コピー元画像の確認 if (!is_uploaded_file( $_FILES['upFile']['tmp_name'])) { echo 'ファイルが選択されていません。'; exit(); } $targetImage = $_FILES['upFile']['tmp_name']; $targetName = $_FILES["upFile"]["name"]; //ファイル拡張子取得 $file_ex = substr($targetName, strrpos($targetName, '.') + 1); /****png拡張子の縮小****/ if($file_ex === 'png'){ // ファイル名から、画像インスタンスを生成 $original = imagecreatefrompng($targetImage); // コピー元画像のファイルサイズを取得 $image_w = imagesx($original); $image_h = imagesy($original); // 出力する画像サイズの指定 $width = $image_w *0.1; $height = $image_h *0.1; // サイズを指定して、背景用画像を生成 $resize = imagecreatetruecolor($width, $height); /* 透過情報をそのままに */ // アルファブレンディングをoffにする imagealphablending($resize, false); // 完全なアルファチャネル情報を保存する imagesavealpha($resize, true); // 背景画像に、画像をコピーする imagecopyresampled( $resize, // 背景画像 $original,// コピー元画像 0, // 背景画像の x 座標 0, // 背景画像の y 座標 0, // コピー元の x 座標 0, // コピー元の y 座標 $width, // 背景画像の幅 $height, // 背景画像の高さ $image_w, // コピー元画像ファイルの幅 $image_h // コピー元画像ファイルの高さ ); // content type ヘッダ header('Content-Type: image/png'); // 画像を出力する imagepng($resize, // 背景画像 $_FILES["upFile"]["name"]//保存先 ); // メモリを開放する imagedestroy($resize); imagedestroy($original); ?>
まとめ
ライブラリ系使わずに何とかする方法はわからなかったので断念。
何とかする方法があればレンタルサーバーで使えて便利なのですが。うむむ。