Декодирование JPEG(JFIF). Как восстановить поврежденный файл?

Имеется фото из инстаграмма формата JFIF, в котором "повреждены" какие-то биты, вследствие чего ~50% фото отображается некорректно.
Как найти поврежденные участки и исправить?

P.S. Hex-редактор есть.
9df57c82786c4cf49887e9d41544049a.jpeg
  • Вопрос задан
  • 1986 просмотров
Решения вопроса 2
Spetros
@Spetros
IT-шник
Есть отличный FAQ по восстановлению изображений.
forum.ixbt.com/post.cgi?id=annc:23:28361
Ответ написан
Комментировать
@al_ace
Работаю в ACE Lab
Спецификация jpeg описана в документе www.w3.org/Graphics/JPEG/itu-t81.pdf.
Данные в jpeg'е кодируются строками сверху вниз, строки кодируются слева направо. Найти место повреждения вы можете методом "научного тыка" - берете этот файл и изменяете байт в середине, смотрите с какого места начались новые повреждения. Если после (в этой же строке правее или в любой строке ниже) вашего повреждения - значит и новое повреждение находится в файле позже (по большему смещению). Если раньше - раньше. Так половинным делением вы сильно сузите круг поиска. Дальше надо найти тот самый бит, который вам все испортил. Тут, наверное, долгий и нудный перебор каждого бита в оставшемся диапазоне, с последующим просмотром.

Кажется, когда-то видел программу, которая реализовывала такой подход. В ней надо было мышкой указать где именно поломалась картинка.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Можно посмотреть исходники программы PhotoRec в составе пакета testdisk.

Добавлено позже
PhotoRec can handle some form of data fragmentation in JPEG file. Using the libjpeg library, it's able to check recovered data.
Ответ написан
Комментировать
@spudro Автор вопроса
Блин, вы видите теги? Я знаю, что есть программы восстанавливающие фото. Они мне не нужны.
Я подхожу к этому вопросу с точки зрения устройства JPEG. Я хочу знать как это делается!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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