Как определить, поврежден ли файл изображения jpg jpeg (неполный)?

Я должен показать некоторые изображения с сервера изображений других пользователей на моем веб-сайте, но некоторые изображения с сервера изображений могут отображаться только частично, как показано ниже.введите описание изображения здесьИзображение содержит информацию о ширине и высоте, но показывает только верхнюю часть изображения.Если я открою изображение с Chrome v61, оно будет выглядеть как на картинке нижевведите описание изображения здесьChrome v61 показывает этот цвет для отображения прозрачности в файле изображения png, но что это значит в файле изображения jpg jpeg?Кто-нибудь знает, как обнаружить такой вид поврежденного (неполного) изображения?Я пытаюсь избегать такого рода изображений, отображаемых на моем сайте.
4 голоса | спросил JasonHsieh 18 +03002017-10-18T07:31:51+03:00312017bEurope/MoscowWed, 18 Oct 2017 07:31:51 +0300 2017, 07:31:51

2 ответа


0
Если вам нужен «программный» подход, а не подход командной строки, предложенный @MarkSetchell, вы можете создать очень быстрый тест для этого практически на любом языке программирования.Обратите внимание, что это поможет найти только тот тип искажения, который вы упомянули в своем вопросе.Метод Марка может быть более надежным для выявления коррупции в целом.Как мы знаем, любой файл JPEG или поток записывается в соответствии с форматом обмена JPEG .Это означает, что они должны начинаться с маркера SOI (Start-of-Image) (два байта ---- +: = 0 =: + ---- ) и заканчиваться маркером EOI (End-of-Image)(два байта, ---- +: = 1 =: + ---- ).Эти два маркера не будут найдены где-либо еще в файле /потоке JPEG.Если вы сначала идентифицируете файл как JPEG, проверив первые два байта и сопоставив его с маркером SOI, вы можете перейти к концу и выполнить поиск маркера EOI в обратном направлении.Скорее всего, это будут либо последние два байта, либо вы их вообще не найдете.Но может быть безопаснее выполнить поиск (возможно, для ограниченной длины), так как я думаю, что может быть разрешено помещать данные конкретного приложения в файл JPEG после ВЗ (кто-то, пожалуйста, исправьте меня, если я ошибаюсь).
ответил haraldK 18 +03002017-10-18T14:34:34+03:00312017bEurope/MoscowWed, 18 Oct 2017 14:34:34 +0300 2017, 14:34:34
0
Я создал JPEG для проверки этого с помощью ImageMagick следующим образом:и это было 14kB.Ваше изображение выглядит как неполное, поэтому я отрубил все после 3 КБ следующим образом:Теперь, если я запускаю команду ImageMagick ---- +: = 2 =: + ---- и отбрасываю ---- +: = 3 =: + ---- , просто сохраняя ---- +:= 4 =: + ---- , я получаю:Пример выводаВ качестве альтернативы, вы также можете сбросить ---- +: = 7 =: + ---- и просто посмотреть код выхода (0 = успех, все остальное = ошибка):тогда как для полного изображения:ImageMagick устанавливается в большинстве дистрибутивов Linux и доступен для macOS /OSX и Windows.
ответил Mark Setchell 18 +03002017-10-18T11:13:03+03:00312017bEurope/MoscowWed, 18 Oct 2017 11:13:03 +0300 2017, 11:13:03

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132