PHP Imagick PNG文件上的致命错误

时间:2018-06-08 04:27:38

标签: php imagick

我得到了创建缩略图的脚本,今天出现的问题是某些图像在这一行造成致命错误:

$im = new imagick($filename);

以下是错误消息 -

  

致命错误:未捕获的异常'ImagickException',消息'corrupt image`picturename.png'@ error / png.c / ReadPNGImage / 3789'in common.php:370   堆栈跟踪:

     

0 common.php(370):Imagick-> __ construct('...')

经过一些研究后,我注意到它可能是一些png文件的想象力错误,这种情况发生在第一次所以它可能非常罕见

如何处理此错误以便它不会停止脚本?

我之前考虑过验证图像格式,但没有找到任何工作。

1 个答案:

答案 0 :(得分:0)

  

如何处理此错误以便它不会停止脚本?

正如评论中所指出的,您需要处理异常以允许脚本继续。

try {
    $im = new Imagick($filename);
} catch (ImagickException $e) {
    $im = null;
    // .. handle error ..
}
if ($im) { // .. do work ..
  

我之前考虑过验证图像格式,但没有找到任何工作。

Imagick::pingImage方法可帮助识别有关图像的元信息。这可用于确保文件与应用程序所期望的相匹配 - 无需将图像数据解码到内存中。

然而,在解码子例程期间,您使用的图像似乎具有错误的块数据,因此ping图像将无法捕获它。损坏的图像很常见,您的解决方案应该通过错误处理来预测它。