人気ブログランキング |
2012年 11月 06日 ( 2 )
(PHP)画像のリサイズ、回転を行う
PHPで画像のリサイズ、回転を行いたいわけですが、GDライブラリを使うと簡単にできます。

アップロードされた画像をファイルをリサイズする場合、下記のような感じです。
$imginfo = getimagesize( $_FILES['image']['tmp_name'] );
if ( $imginfo[2] == IMAGETYPE_JPEG || $imginfo[2] == IMAGETYPE_GIF
|| $imginfo[2] == IMAGETYPE_PNG ){
 
$image = ImageCreateFromJPEG($_FILES['image']['tmp_name']); //JPEGファイルを読み込む
//回転する場合は、下記のようにする 引数は、画像、角度、回転後にカバーされない部分に利用される背景色
//$image = imagerotate($image, 90, 0);
 
$width = $imginfo[0]; //ImageSX($image)でも可
$height = $imginfo[1]; //ImageSY($image)でも可
//縮小サイズ決定
$new_width = 240;
$rate = $new_width / $width; //圧縮比を求める
$new_height = $rate * $height;
 
// 空の画像を作成する。
$new_image = ImageCreateTrueColor($new_width, $new_height);
 
//リサイズ サンプリングしなおす場合。(ImageCopyResizedよりこっちの方が綺麗みたい)
ImageCopyResampled($new_image,$image,0,0,0,0,$new_width,$new_height,$width,$height);
//ファイル保存(数値は品質)
ImageJPEG($new_image, $_FILES['image']['tmp_name'], 70);
 
//後処理 メモリ解放
ImageDestroy($image);
ImageDestroy($new_image);
}else{
//画像じゃないとき
echo "error:選択されたファイルは画像ファイルではありません。";
}

非常に簡単ですね。

参考:
【PHP】GDライブラリを使って画像のサムネイルを作成する。
Geekなぺーじ : PHP GDプログラミング
imagecopyresampled()の画像リサイズ処理|管理者メモ(雑記)|PHPアップローダー フォトアルバム
by Jehoshaphat | 2012-11-06 22:40 | PHP開発
(PHP)AjaxUploadで画像が表示されない原因は、、、BOMだった..
(PHP,HTML)AjaxUpload 画像選択時にアップロードしサムネイルを表示を実装していたんですが、なぜかサムネイルが表示されない現象が発生しました。


Ajaxで返すPHP側を絶対パスで返すようにIE8で画像のプロパティを表示すると、 http://hoge.local/http://hoge.local/img/up.jpg といったように正しくパスが解釈されません。
で、Firefoxで確認すると、画像パスが http://hoge.local/%EF%BB%BF%EF%BB%BFhttp://hoge.local/img/up.jpg となっています。

ん? EF BB BF ってどっかでみたことあるぞ と思ったら、(PHP)UTF8でBOMがあるとブラウザ表示時レイアウトがおかしくなるで以前ハマッた現象でした。

そうです。reuireしている別PHPファイル2個が UTF-8 の BOM が付いていたのです。

BOM無しで保存しなおすことで、正しく表示されるようになりましたが、気づくのにかなりの時間がかかってしまいましたorz。

PHPでUTF-8を使う場合は、必ずBOM無しって覚えておかないといけませんね。。。
by Jehoshaphat | 2012-11-06 19:43 | PHP開発