1

我有一个 JPEG 图像库,我正在尝试使用 PHP 的 GD 进行管理。一张特别的 JPEG 图像给我带来了麻烦。它以 32,768 x 1,024 像素的尺寸标识自己。图像在磁盘上只有 1.9 MB。其他图像处理工具(例如我的 Mac 上的 Finder 和 Preview 以及 ImageMagick)可以很好地处理它。然而,当我的系统调用imagecreatefromjpeg()它时,我得到一个经典的“允许的内存大小耗尽”致命异常。我相信图像已损坏。它应该是一个 1024x1024 的网页快照,使用wkhtmltoimage.

通常这个问题的答案是增加 PHP 的memory_limit. 但我的已经很大了,256MB。

我能做些什么来抢先检测这种类型的图像损坏并优雅地处理它?如果我在调用前添加一个“@” imagecreatefromjpeg(),PHP 只会以“500 Internal Server Error”而死。我不能使用try/catch任何一个,因为这是一个致命错误。

FWIW,以下是 ImageMagickidentify工具的描述方式:

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

我想我可以做到if ($width == 32768) { ... },但那太骇人听闻了。可能存在具有该宽度的图像。

还有其他想法吗?

4

0 回答 0