我有一个JPEG图像库我试图使用PHP的GD进行管理。一个特殊的JPEG图像给我带来了麻烦。它标识尺寸为32,768 x 1,024像素。磁盘上的映像只有1.9 MB。其他图像处理工具(如我的Mac上的Finder和Preview)以及ImageMagick处理得很好。然而,当我的系统调用imagecreatefromjpeg()
时,我得到一个经典的"允许的内存大小耗尽"致命的例外。我相信图像已损坏。它应该是使用wkhtmltoimage
创建的网页的1024x1024快照。
通常,答案是增加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) { ... }
,但那是骇人听闻的。 可以是具有该宽度的图像。
还有其他想法吗?