Hola, estoy seguro de que se hicieron muchas preguntas similares, pero después de buscar mucho no encontré ninguna publicación que describiera mi situación.
Tengo algunos archivos jpg que tienen algunos colores incorrectos después de un cierto punto y también cada píxel se desplaza hacia la izquierda. Creo que esto se debe a que faltan algunos bytes en el punto donde cambia. Traté de editar el archivo con vi pero parece imposible descubrir dónde están los bytes faltantes, también vi es muy complicado de usar. También probé nano pero no es seguro para binarios.
Esta es una de las imágenes en cuestión:
Entonces quiero hacerte dos preguntas:
- ¿Cómo puedo reparar esas imágenes en Linux?
- ¿Cómo podría abrir y editar el archivo de forma segura en un editor de texto binario en Linux?
Editar: usando hexedit descubrí que desde la posición 0x27F000 a 0x27F403 solo hay unos 0xff, y de 0x27F404 a 0x27FFFF solo hay ceros 0x00. Esto hace algo como esto:
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.....
Cambiando estos bytes con números aleatorios pude quitar la imagen, pero aún existe el problema del color.
¿Podría alguien indicarme alguna documentación sobre la codificación jpeg para poder descubrir cómo termina un bloque de 8x8?
Me pregunto por qué las posiciones son tan precisas (0x27F000 a 0x27FFFF), ¿podría ser un error de mi cámara o de la tarjeta de memoria que utilicé?