Привет, я уверен, что было задано много похожих вопросов, но после долгих поисков я не нашел ни одного поста, описывающего мою ситуацию.
У меня есть несколько файлов JPG, которые имеют некоторые цвета неправильно после определенной точки, а также каждый пиксель смещен влево. Я думаю, что это из-за некоторых пропущенных байтов в точке, где это изменяется. Я попытался отредактировать файл с помощью vi, но невозможно определить, где находятся отсутствующие байты, также очень сложно использовать vi. Я также пробовал нано, но это не бинарно-безопасно.
Это одно из рассматриваемых изображений:
Поэтому я хочу задать вам два вопроса:
- Как я могу восстановить такие образы в Linux?
- Как можно безопасно открыть и отредактировать файл в бинарном текстовом редакторе под Linux?
Редактировать: используя hexedit, я обнаружил, что от 0x27F000 до 0x27F403 есть только 0xff, а от 0x27F404 до 0x27FFFF только нули 0x00. Это делает что-то вроде этого:
0027EFF0 F8 83 C3 E2 09 35 AF 13 44 6E C5 FD C7 EF 23 E8 .....5..Dn....#.
0027F000 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
[...]
0027F400 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 ................
[...]
0027FFF0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00280000 8F 39 6E 47 4F 43 5F 36 7C 73 66 F1 0D AE AD AF .9nGOC_6|sf.....
Заменив эти байты случайными числами, я смог снять изображение, но проблема цвета все еще существует.
Может кто-нибудь указать мне документацию о jpeg-кодировании, чтобы я мог понять, как узнать, где заканчивается блок 8x8.
Мне интересно, почему позиции так точны (от 0x27F000 до 0x27FFFF), это может быть ошибка моей камеры или карты памяти, которую я использовал?