またしても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);
?>
##まとめ
ライブラリ系使わずに何とかする方法はわからなかったので断念。
何とかする方法があればレンタルサーバーで使えて便利なのですが。うむむ。