PHP查找并删除未完成的下载图像

时间:2018-04-06 12:21:17

标签: php image detection corrupt complete

我有一个包含100.000张图片的文件夹,但有时候我的图片已经完成了。是否有可能在PHP中检测到这些损坏的图片?我已附上一张示例图片,如您所见,第二张图片在底部被切割。有没有办法检测到第一张图像是完整图像而第二张图像是不完整的?

我没有手动切割图像,它是这样下载的。在图像文件的原始数据中是否存在类似“开始标记”和“结束标记”的内容,我可以检查两者是否都已设置?图片没有以健康的方式裁剪,我附上了缩略图的截图。

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

裁剪后的图像不会损坏图像,如果图像损坏,则无法返回高度和宽度等属性。因此,您在示例中显示的图像不是损坏的图像。

您要检查图像是否损坏,您可以执行以下操作

//loop for images file in directory
foreach (glob("*.*") as $filename) {
//if it is not image delete it
  if(!@is_array(getimagesize($filename))){
    unlink($filename);
   } 

  }
}

答案 1 :(得分:-1)

您的第二张图片是有效图片,不会以任何方式损坏,甚至尺寸也相同。它只是裁剪。当然,您可以使用PHP或任何其他语言的脚本遍历所有图像,但 以某种方式您必须以编程方式检测图像是否已损坏"。

如果裁剪是您必须 找到能够检测图像是否被裁剪 的图像库或工具的唯一标准,那将是困难的部分。使用PHP'例如exec()你可以在循环中调用这样的工具。

更新问题后,可能会出现实际 损坏的 图片进行整理。检测谁应该更容易。这个问题已在这里提出:Detecting whether an image is corrupted or broken