У меня есть папка с 100 000 изображений, но иногда у меня есть неполные изображения. Можно ли обнаружить эти поврежденные картинки в PHP? Я приложил пример изображения, как вы можете видеть, второе изображение вырезано внизу. Есть ли способ обнаружить, что первое изображение является полным изображением, а второе — неполным?
Я не вырезал изображение вручную, оно было скачано так. Есть ли что-то вроде «начального тега» и «конечного тега» в необработанных данных файла изображения, и я могу проверить, установлены ли оба параметра? Изображение не обрезается здоровым способом, я прикрепил скриншот миниатюры.
Обрезанное изображение не является поврежденным изображением, если изображение повреждено, вы не можете вернуть свойство, такое как высота и ширина. Таким образом, изображение, которое вы показали в примере, не является поврежденным.
Если вы хотите проверить, повреждено ли изображение или нет, вы можете сделать, как показано ниже
//loop for images file in directory
foreach (glob("*.*") as $filename) {
//if it is not image delete it
if(!@is_array(getimagesize($filename))){
unlink($filename);
}
}
}
Ваше второе изображение является действительным изображением, не поврежденным в любом случае, и даже размеры одинаковы. Просто обрезается. Конечно, вы можете перебрать все изображения с помощью PHP или скрипта на любом другом языке, но каким-то образом вы должны определить программно, если изображение «повреждено».
Если обрезка является единственным критерием, вы должны найти библиотеку изображений или инструмент, который может определить, обрезано ли изображение или нет, и это будет трудная часть. С PHP exec()
например, вы можете вызвать такой инструмент в цикле.
После того, как вы обновили свой вопрос, возможно, у вас поврежден изображения, чтобы разобраться. Обнаружение которого должно быть проще. Этот вопрос уже задавался здесь: Обнаружение, повреждено ли изображение или сломано