2012-01-12 11 views
4

現在、PHPを使用して複数の画像をアップロードし、サーバ上でサイズを変更できるフォームを取得しようとしています。クライアントによってアップロードされた各イメージは約2.5MBのサイズです。メモリリミットを超えずにPHPで複数の画像のサイズを変更する

私は現在move_uploaded_file()機能を使用しています。

ファイルをサーバーに移動する際に問題はありません。問題は私が作物を作ろうとするときに起こります。それはこの意志をスタンドとして

$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 
imagejpeg($image_p, $output_filename, 80); 

を、私は、このセットアップを使用しています私のホスト上でImageMagickのないを持つ(関連性のものだけすべてのコードではありません、これは別の作物サイズの変更など$widthとループしています) 2枚の画像でしか動作しません。 3回以上提出された場合は、「メモリが枯渇しました」というエラーが表示されます。私は私の記憶限界が120メガバイトであるのでこれを研究した。どうやら、imagecreatefromjpeg関数は、特にファイルの解像度が大きい場合(私の場合は - なぜそれがトリミング/サイズ変更される必要があるか)、多くのメモリを使います。

誰かがこの作業のより効率的なアプローチを知っていますか?私はgoogleで研究したが、誰もが同じテクニックを使っている。

+1

あなたは、処理元( '$のimage')のため_imagedestroy_を使用して試してみました(' $のimage_p')リサイズことがありますか? –

答えて

5

使用imagedestroyは$イメージと$ image_pに関連付けられたすべてのメモリをクリアするために:あなたが行われた後

$image_p = imagecreatetruecolor($width, $height); 
$image = imagecreatefromjpeg($filename); 
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width_orig, $height_orig); 
imagejpeg($image_p, $output_filename, 80); 
imagedestroy($image); 
imagedestroy($image_p); 
関連する問題