Corrupted progressive jpeg file - Analyse und Reparatur

Hallo zusammen, :)

wie ihr euch bestimmt denken könnt, hab ich ein kleines Problem. ^^ Ich habe momentan ein Bild im JPG-Format vorliegen, welches beschädigt ist. Ich möchte dieses gerne reparieren, stecke aber momentan etwas fest.

Kurzinfo:
Code:
$ jhead zombiegirls.jpg 
File name    : zombiegirls.jpg
File size    : 8494025 bytes
File date    : 2017:01:13 23:02:08
Date/Time    : 2016:05:01 11:31:06
Resolution   : 4568 x 3448
Jpeg process : Progressive
JPEG Quality : 100
Comment      : Created with GIMP?
Ich habe zuerst versucht das Bild mit imagemagick in ein pnm zu konvertieren. Allerdings verursacht der Scan des Bildes einige Probleme. Es werden ungültige Marker gefunden, wodurch die Huffman-Kodierung ins Schleudern kommt.

Code:
$ convert zombiegirls.jpg fixed.pnm
convert: Corrupt JPEG data: premature end of data segment `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Corrupt JPEG data: bad Huffman code `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Corrupt JPEG data: premature end of data segment `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Corrupt JPEG data: 350885 extraneous bytes before marker 0xda `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Corrupt JPEG data: 3467 extraneous bytes before marker 0xc4 `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Corrupt JPEG data: bad Huffman code `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Corrupt JPEG data: premature end of data segment `zombiegirls.jpg' @ warning/jpeg.c/JPEGWarningHandler/352.
convert: Unsupported marker type 0xa1 `zombiegirls.jpg' @ error/jpeg.c/JPEGErrorHandler/322.
convert: no images defined `fixed.pnm' @ error/convert.c/ConvertImageCommand/3257.
Anschließend hab ich die Datei mittels JPEGSnoop und einem HexEditor genauer betrachtet. JPEGSnoop kommt vorher schon ins Schleudern.

Die vollständige Logdatei ist angehängt (zombiegirls.jpg.txt)
Code:
  OFFSET: 0x005B8B4D
  Header length = 28638
  Skipping unsupported marker
 
ERROR: Expected marker 0xFF, got 0xF7 @ offset 0x005BFB2D. Consider using [Tools->Img Search Fwd/Rev].
JPEGSnoop sagt, dass der Marker an der Stelle: 0x005B8B4D, eine nicht unterstützte Längenangabe hat. Es handelt sich dabei um den Marker: ArithTemp = 0xFF01.
Dieser sollte eigentlich nicht im compressed data stream vorhanden sein, oder? Wenn ich das eine bit kippe (0xFF00) erhalte ich die selbe Fehlermeldung, wie mit imagemagick:

Code:
  OFFSET: 0x007D6B47
WARNING: Unknown marker [0xFFA1], stopping decode
  Use [Img Search Fwd/Rev] to locate other valid embedded JPEGs
Nach etwas Debugging und dem dazu schalten des Debug-flags für convert, taucht auch die Meldung über den Falschen Marker 0xFF01 bei convert auf. >.<
Code:
2017-01-14T16:25:34+01:00 0:00.180 0.170u 6.9.6 Coder convert[10641]: jpeg.c/JPEGWarningHandler/362/Coder
  [zombiegirls.jpg] JPEG Trace: "Unexpected marker 0x01"
Mit der proprietären Software Picture Doctor [1] von SoftOrbits kann ich das Bild reparieren und als bmp ausgeben. Dieses ist allerdings mit einem Wasserzeichen versehen. Dieses wird entfernt, wenn man die Software für 99€ registriert. Das ist mir der Spaß nicht wert und es muss ja auch anders gehen. ^^

Welche Möglichkeiten hab ich noch an die Sache heranzugehen? Hat jemand Erfahrung damit?
Ich freue mich auf eine interessante Diskussion und Tipps von euch. :)

[1] Jpeg Repair Tool. Jpeg Recovery Software To Repair Corrupt Or Damaged Jpg Files.
 
Zurück
Oben