1

PHP の GD を使用して管理しようとしている JPEG 画像のギャラリーがあります。1 つの特定の JPEG 画像が問題を引き起こしています。32,768 x 1,024 ピクセルのサイズで識別されます。イメージはディスク上でわずか 1.9 MB です。Mac の Finder や Preview、ImageMagick などの他の画像処理ツールでは問題なく処理されます。それでも、私のシステムがimagecreatefromjpeg()それを呼び出すと、古典的な「許容メモリサイズが使い果たされました」という致命的な例外が発生します。イメージが壊れていると思います。で作成された Web ページの 1024x1024 のスナップショットであるはずwkhtmltoimageです。

通常、これに対する答えは、PHP の を増やすことmemory_limitです。しかし、私のものはすでに大きく、256MB です。

この種のイメージの破損を先制的に検出し、適切に処理するためにできることはありますか? 呼び出しの前に「@」を追加するimagecreatefromjpeg()と、PHP は代わりに「500 内部サーバー エラー」で終了します。try/catchどちらも致命的なエラーなので使えません。

FWIW、ImageMagickのidentifyツールがそれをどのように説明しているかは次のとおりです。

myimage.jpg JPEG 32768x1024 32768x1024+0+0 8-bit sRGB 1.948MB 0.000u 0:00.000

できると思いますがif ($width == 32768) { ... }、それはハックです。その幅のイメージがあるかもしれません。

他のアイデアはありますか?

4

0 に答える 0