我有一个 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) { ... }
,但那太骇人听闻了。可能存在具有该宽度的图像。
还有其他想法吗?