Wie wichtig ist die JPEG-Endlichkeit beim Codieren?

8

Ich arbeite gerade an einem großen Projekt mit Bildern. Eines der großen Probleme, die ich habe, ist mit der Endianz des Bildes (JPEG, um klarer zu sein). Ich habe immer gedacht, dass wir in unserer modernen Welt nicht über dieses Thema herummachen mussten, aber jetzt bin ich mir nicht sicher.

Was ich mache:

  1. Ich mache eine HTTP-Anfrage an eine IP-Kamera, die Kamera gibt mir ein Byte-Array zurück.
  2. Ich parse dieses Byte in ein Objekt Image in .NET mit Image.FromStream.
  3. Ich nehme mein Image-Objekt und speichere eine physische Datei auf der Festplatte.

Diese Bilder werden dann in einem anderen Modul meiner Anwendung verwendet, die einen "Viewer" von Drittanbietern verwenden, der einige Manipulationen an dem Bild vornimmt. Der Viewer arbeitet mit allen Bildern, die mit dem Computer unter Windows XP und Windows Vista erstellt wurden. Aber wenn das Bild mit einem Windows 7-Rechner erstellt wird, sind die Bilder alle durcheinander.

Nehmen wir an, dass das mit Windows XP erstellte Bild PictureXP heißt und das mit Windows 7 erstellte Bild Picture7 heißen wird Ich habe die Dateien mit exiftools überprüft und festgestellt, dass es zwischen PictureXP und Picture7 2 Felder gab.

PictureXP: Exif-Byte-Reihenfolge: Little-Endian Bild7: Exif-Byte-Reihenfolge: Big-Endian Picture7 haben auch ein zusätzliches Feld: Benutzer Kommentar:.

Die zwei Bilder können normal in jedem Fotobetrachter geöffnet werden, nur in diesem Drittanbieterbetrachter erscheint das Bild durcheinander und der einzige Unterschied zwischen den drei Bildern sind diese Felder.

Was ich wissen möchte:

  1. Ist es möglich, dass die dritte Partei zusätzlichen Code zu seiner Software hinzufügen muss, damit sie sich mit der Endlichkeit des Bildes auseinandersetzen muss? Ich nehme an, dass alle Bilderprogramme da draußen damit umgehen?
  2. Ist es für mich möglich, die Endianz meines JPEG zu ändern, um immer Little-Endian zu sein? Ich habe irgendwo gelesen, dass der Inhalt einer JPEG-Datei immer in der gleichen Endiane sein soll, aber es scheint, dass er die Exif-Daten nicht berücksichtigt. Wenn es möglich ist, würde ich eine Lösung in .NET ...
  3. lieben
  4. Alles, was dazu beitragen könnte, durch diese Situation zu gehen, wird auch als eine Antwort betrachtet werden.

Vielen Dank!

EDIT 1 : Ich habe diesen Artikel gefunden, der bestätigt, dass endiannes, die in der Exif-Kopfzeile gefunden werden, gilt nur für die Exif-Kopfzeile und eine JPEG-Datei ist immer in Big-Endian. Also gibt es eine Möglichkeit, den Exif-Header zu ändern, so dass der Drittanbieter Soft lesen könnte, was er braucht?

    
Jean-François Côté 24.08.2011, 15:07
quelle

2 Antworten

6

Ok, also habe ich meine Antwort gefunden, indem ich Phil, dem Autor von exiftool <, eine Frage gestellt habe / p>

Sie können den Thread sehen, den ich mit ihm hier hatte

  1. Ja, es ist möglich. Dem 3rd Party SDK war nicht bekannt, dass der Exif-Header mit Little-Endian oder Big-Endian codiert werden konnte und nur mit Little-Endian gelesen wurde. Wenn ich all mein Bild in Little Endian ändere, wurde das Problem behoben.
  2. 2 Teile Antwort: Erstens, die Daten eines JPEGs sind immer Big Endian wie in meinem Edit gesagt. Zweitens kann der Exif-Header entweder Little-Endian oder Big-Endian sein, und es ist möglich, ihn mit exiftool zu ändern.

In der Befehlszeile:

exiftool -all= -tagsfromfile test.jpg -all:all -unsafe -exifbyteorder=little-endian test.jpg

Sie können auf dieser Seite .

Vielen Dank für Ihr Interesse an der Frage und der Antwort, die ich erhalten habe.

    
Jean-François Côté 25.08.2011, 12:23
quelle
1

Ich denke, vielleicht liegt das Problem beim Benutzerkommentarfeld. Ich lese irgendwo , dass Windows Vista (und wahrscheinlich Windows 7) speichert das Benutzerkommentarfeld als Unicode in Little-Endian-Byte-Reihenfolge, unabhängig von der Byte-Reihenfolge der EXIF-Informationen. Da der einzige Unterschied zwischen PictureXP und Picture7 die Endianz der Exif-Informationen und des Benutzerkommentarfeldes ist, sollten Sie vielleicht so aussehen

Viel Glück

    
Goldorak84 24.08.2011 16:58
quelle

Tags und Links