我得到了创建缩略图的脚本,今天出现的问题是某些图像在这一行造成致命错误:
$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文件的想象力错误,这种情况发生在第一次所以它可能非常罕见
如何处理此错误以便它不会停止脚本?
我之前考虑过验证图像格式,但没有找到任何工作。
答案 0 :(得分:0)
如何处理此错误以便它不会停止脚本?
正如评论中所指出的,您需要处理异常以允许脚本继续。
try {
$im = new Imagick($filename);
} catch (ImagickException $e) {
$im = null;
// .. handle error ..
}
if ($im) { // .. do work ..
我之前考虑过验证图像格式,但没有找到任何工作。
有Imagick::pingImage
方法可帮助识别有关图像的元信息。这可用于确保文件与应用程序所期望的相匹配 - 无需将图像数据解码到内存中。
然而,在解码子例程期间,您使用的图像似乎具有错误的块数据,因此ping图像将无法捕获它。损坏的图像很常见,您的解决方案应该通过错误处理来预测它。