嗨,我确定有人问过很多类似的问题,但是经过大量搜索后,我没有发现任何描述我的情况的帖子。
我有一些jpg文件,它们在某个点之后颜色有些错误,而且每个像素都向左移动。我认为这是因为在更改时缺少一些字节。我尝试使用vi编辑文件,但似乎无法找出丢失的字节在哪里,而且vi使用起来非常复杂。我也尝试过nano,但是它不是二进制安全的。
这是有问题的图像之一:
所以我想问你两个问题:
- 如何在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),这可能是我的摄像头或使用的存储卡的错误吗?