使用PHP gd-png处理损坏/截断的文件

时间:2017-03-07 19:58:12

标签: php gd

我正在处理一个必须处理大量图像的脚本,我需要一种优雅的方法来处理集合中的损坏/截断图像。

目前我的脚本适用于所有有效图像,但在遇到截断文件时会崩溃。它一定是潜入文件夹但我想处理这个案子。

它是一个* .png.tmp文件,在将其提供给 imagecreatefrompng()时,会导致致命错误并停止我的脚本。

Fatal error: imagecreatefrompng(): gd-png: fatal libpng error: Read Error: truncated data...

它被 getimagesize() exif_imagetype()识别为PNG。

由于我无法将其作为例外处理,有没有办法检查文件是否有效而不会崩溃我的脚本而不依赖文件名中的扩展名?

我可以跳过图像,但在遇到致命错误之前,我不知道如何将其识别为问题图像。

1 个答案:

答案 0 :(得分:1)

您是否尝试使用@运算符来抑制错误,并检查是否实际创建了图像?

foreach ($imagePaths as $imagePath)
{
    $image = @imagecreatefrompng($imagePath);
    if (!$image)
    {
        //maybe delete bad image?
        unlink($imagePath);
        continue;//do nothing in this iteration anymore
    }
    //do your magic here
}