スレッド表示 | フラット表示〕 全トピック 923 件中 177 番目 次≫ ≪前

画像のリサイズ

created: 2006-10-28 22:54 | modified: 2006-10-29 20:52 | reply: 4

[3438] 画像のリサイズ

user: 江戸川アダモ | created: 2006-10-28 22:54
画像投稿掲示板の続きで、別件の質問です。

先述のアップロードされた画像をリサイズする下記のスクリプトについてですが…

************ php **************************************

if($_FILES['pic']['name']!=""){

//アップロードされた画像の処理/////////////
$fname=$_FILES['pic']['name'];
$temp=$_FILES['pic']['tmp_name'];

$target='/home/public_html/bbs/pic/'.$fname;
move_uploaded_file($temp,$target) or exit("file upload failed");

//画像をリサイズする↓////////////////////
$size=getimagesize($target);
$yx=$size[1]/$size[0];
$sum=imagecreate(200,200*$yx);
$orig=imagecreatefromjpeg($target);//【*1】
imagecopyresampled($sum,$orig,0,0,0,0,200,200*$yx,$size[0],$size[1]);

$file='/home/public_html/bbs/pic/sum/'.$fname;
//サムネイルを保存///////////////////////////
imagejpeg($sum,$file);

imagedestroy($orig);
imagedestroy($sum);

chmod('/home/mctaichi/public_html/bbs/pic/',0707);

}
*******************************************************

ある程度以上のサイズの画像をアップロードしようとすると、下記のようなエラーメッセージが出ます。

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 6400 bytes) in /home/public_html/bbs/check.php on line 41

ちなみに、このときアップロードした画像のファイルサイズは679KB、phpのmax_uploaed_sizeは8MBに設定してあります。

line 41というのは上記の【*1】の行です。
このことから察するに、imagecreatefromjpeg関数はjpegファイルを一旦非圧縮の画像に変換していて、それが8MBを超えたということではないでしょうか?

そうだとすると、元が600KB(1600*1200)程度の画像であっても、それに何らかの加工を施そうとすると、途中の段階で巨大なファイルが出来てメモリを食うので、結局エラーになってしまう訳ですよね?
これを回避する方法は無いのでしょうか?
reply: 3439 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 177 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑