ホームページ  >  記事  >  バックエンド開発  >  3.7 MB の写真には imagecreatefromjpeg 関数を使用できないのはなぜですか?

3.7 MB の写真には imagecreatefromjpeg 関数を使用できないのはなぜですか?

WBOY
WBOYオリジナル
2016-06-13 12:48:05924ブラウズ

3.7 MB の画像に imagecreatefromjpeg 関数を使用できないのはなぜですか?
画像をアップロードしてサムネイルを生成するには、次のコードを使用します
$imgsrc='E:/123.jpg';
$w1 = getimagesize($imgsrc); $src =imagecreatefromjpeg(imgsrc);// imagecreatefromjpeg($imgsrc);
$dst = ImageCreateTrueColor($x,$y); ImageCopyResampled($dst,$src,0,0,0,0,$x,$y,$w1[0],$w1[1]); imagejpeg($dst,$imgsrc,80);

画像が2M以下であれば問題なく使いやすいです。しかし、3.7 MB の画像をアップロードすると、プログラムが imagecreatefromjpeg に移行すると空白のページが表示され、その後のコードは実行されません。この問題を解決する方法、またはアップロード時に画像サイズを直接変更する方法はありますか?


-----解決策--------------------------------
メモリが不足していますか? GD が正常に実行できるかどうかを決定する条件は、画像ファイルのサイズではなく、画像内のピクセル数です GD が画像を処理するとき、最初に画像を 1 ピクセルあたり 8 バイトのスケールでメモリ内のビットマップに展開します


-----解決策-------- -- ----------

これはメモリ不足の問題です。公式があるかどうかはわかりませんが、画像が大きいか解像度が高い場合に発生するようです。 php.ini のメモリを変更するとうまくいくかもしれませんが、768MB を試した後は諦めて、ImageMagick を使用しています。 イメージを処理する前にコード ini_set('memory_limit','768MB') を使用してみてください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。