Hallo, ich bin mir sicher, dass viele ähnliche Fragen gestellt wurden, aber nachdem ich viel gesucht habe, habe ich keinen Beitrag gefunden, der meine Situation beschreibt.
Ich habe einige JPG-Dateien, deren Farben nach einem bestimmten Punkt falsch sind, und außerdem wird jedes Pixel nach links verschoben. Ich denke, das liegt an einigen fehlenden Bytes an dem Punkt, an dem es sich ändert. Ich habe versucht, die Datei mit vi zu bearbeiten, aber es scheint unmöglich herauszufinden, wo sich die fehlenden Bytes befinden. Außerdem ist die Verwendung von vi sehr kompliziert. Ich habe auch Nano ausprobiert, aber es ist nicht binärsicher.
Dies ist eines der fraglichen Bilder:
Deshalb möchte ich Ihnen zwei Fragen stellen:
- Wie kann ich solche Images unter Linux reparieren?
- Wie kann ich die Datei in einem binären Texteditor unter Linux sicher öffnen und bearbeiten?
Bearbeiten: Mit hexedit habe ich festgestellt, dass es von Position 0x27F000 bis 0x27F403 nur Einsen 0xff und von 0x27F404 bis 0x27FFFF nur Nullen 0x00 gibt. Das macht so etwas:
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.....
Ändern dieser Bytes durch Zufallszahlen Ich konnte das Bild verschieben, aber es gibt immer noch das Farbproblem.
Könnte mich jemand auf eine Dokumentation zur JPEG-Codierung verweisen, damit ich herausfinden kann, wo ein 8x8-Block endet.
Ich frage mich, warum die Positionen so genau sind (0x27F000 bis 0x27FFFF). Könnte dies ein Fehler meiner Kamera oder der von mir verwendeten Speicherkarte sein?
Antworten:
Der Wikipedia-Artikel auf http://en.wikipedia.org/wiki/JPEG#Entropy_coding enthält viele Informationen - das relevanteste für Ihr aktuelles Problem ist dieses:
Die Farbverschiebung im Rest des Bildes wird durch einen einzelnen schlechten Gleichstromkoeffizienten verursacht, der zu allen anderen kaskadiert. Möglicherweise können Sie einen kleinen Bereich finden (vielleicht ein Byte, vielleicht zwei - es ist wahrscheinlich tatsächlich eine Folge von Bits), der die Farben zuverlässig beeinflusst, und eine große Anzahl verschiedener Werte dafür ausprobieren.
Es ist möglicherweise einfacher, das Bild einfach in einem Grafikeditor zu korrigieren. Es sieht so aus, als ob das von Ihnen veröffentlichte Bild, abgesehen von der Verschiebung (und dem Umlauf), einfach eine geringere Helligkeit aufweist. Sie können den Bereich auswählen und das Ebenen-Werkzeug verwenden. Bei anderen, bei denen es mehr um Farbverschiebungen geht, können Sie möglicherweise ein ausreichend gutes Ergebnis erzielen, indem Sie die Zerlegung in Farbkanäle (JPGs können in RGB oder Y'CbCr vorliegen) betrachten und jeden Kanal separat festlegen und möglicherweise die Kanäle vertauschen.
EDIT: Ups, ich habe nicht gesehen, wie alt deine Frage war. Nun, vielleicht ist dies für Sie oder jemand anderen nützlich.
quelle
Viele großartige binäre Editoren finden Sie hier: /programming/839227/how-to-edit-binary-file-on-the-unix-systems
Meine persönlichen Favoriten sind vim mit:%! Xxd hack und hexedit
quelle
shed
?Hast du es versucht
photorec
? Sie können es unter Ubuntu wie folgt installieren:Überprüfen Sie das Handbuch mit:
und einfach so
photorec
vom Terminal laufen :Sie werden aufgefordert, die Quelle und ein Ziel auszuwählen und zu versuchen, JPG-Dateien automatisch wiederherzustellen.
Um eine Beschädigung des Originals zu vermeiden, empfehle ich, mit dem
dd
Befehl eine Kopie zu erstellen. Viel Glück!quelle
Ich habe gerade Photorec verwendet, um Bilder von einer beschädigten SD-Karte wiederherzustellen. Obwohl nicht alle Dateien wiederhergestellt wurden, hat es eine gute Arbeit geleistet, eine gute Anzahl von ihnen wiederherzustellen. Trotzdem wurden MP4-Videos wiederhergestellt, konnten aber nicht geöffnet werden. Einige JPEG-Dateien wurden wiederhergestellt, aber sie konnten auch nicht angezeigt werden oder waren wirklich durcheinander, wie das Beispiel am Anfang dieses Threads zeigt. Photorec hat sie nicht behoben.
Fazit: Photorec wurde entwickelt, um verlorene Dateien aus einem beschädigten DATEISYSTEM abzurufen, unternimmt jedoch anscheinend nichts, um den Inhalt beschädigter DATEIEN wiederherzustellen.
quelle