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) { ... }
、それはハックです。その幅のイメージがあるかもしれません。
他のアイデアはありますか?