Hi I'm sure there were a lot of similar questions asked, but after searching a lot I didn't find any post describing my situation.
I have some jpg files which have some colours wrong after a certain point and also every pixel is shifted to the left. I think this is because of some missing bytes at the point where it changes. I tried to edit the file with vi but it seems impossible to find out where the missing bytes are, also vi is very complicated to use. I also tried nano but it's not binary-safe.
This is one of the images in question:
So I want to ask you two questions:
- How can I repair such images in Linux?
- How could I safely open and edit the file in a binary text editor under Linux?
Edit: using hexedit I discovered that from position 0x27F000 to 0x27F403 there are only ones 0xff, and from 0x27F404 to 0x27FFFF there are only zeroes 0x00. This makes something like this:
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.....
Changing these bytes with random numbers I was able to unshift the image, but there is still the colour problem.
Could someone point me to some documentation about jpeg encoding so I can figure out how to know where an 8x8 block ends.
I'm wondering why the positions are so precise (0x27F000 to 0x27FFFF), could this be a bug of my cam or the memory card I used?