2008-09-18 6 views
5

Ich habe ein kleines Problem.Wie platzieren Sie EXIF-Tags in ein JPG, mit dem rohen JPEG-Puffer in C++?

Ich bekomme einen RAW char * -Puffer von einer Kamera und ich muss diese Tags hinzufügen, bevor ich es auf der Festplatte speichern kann. Das Schreiben der Datei auf die Festplatte und das erneute Lesen ist keine Option, da dies tausende Male passieren wird.

Die Pufferdaten, die ich von der Kamera erhalte, enthalten keine EXIF-Informationen, abgesehen von der Breite, Höhe und Pixeln pro Zoll.

Irgendwelche Ideen? (C++)

+0

➝ betrachten Sie das XMP Metadata Toolkit (Adobe, aber etwas opensource), insbesondere XMPFiles ... –

Antwort

4

Schauen Sie sich die PDF, auf Seite 20 Sie haben ein Diagramm, in dem Sie Ihre Exif-Informationen platzieren oder ändern. Was ist der Unterschied zu einer Datei auf der Festplatte?

Enthält der JPEG-Puffer Ihrer Kamera bereits eine EXIF-Sektion?

+0

Nein der JPEG-Puffer von der Kamera enthält nicht den EXIF-Abschnitt – Hannes

+0

Danke. Dies hilft ... unterscheidet sich vom JFIF-Standard – Hannes

1

Was ist der Unterschied? Warum sollte das mit einer Datei auf der Festplatte anders sein als im Speicher?

Genau das tun, was immer Sie tun, nachdem Sie die Datei von der Festplatte gelesen ..

1

Soweit ich EXIF-Daten in JPEG weiß kontinuierlich subpart der Datei. So

  1. EXIF-Daten im Speicher
  2. Schreib Teil der JPEG-Datei bis EXIF ​​vorbereiten
  3. schreiben vorbereitet EXIF ​​
  4. Schreib Rest von JPEG-Datei
1

Vielleicht möchten Sie einen Blick in Exiv2 Bibliothek werfen. Ich weiß, dass es an Dateien arbeiten kann, aber ich nehme an, dass es auch Funktionen zum Arbeiten mit Speicherpuffern hat.

+0

Beachten Sie, dass Exiv2 nicht für den kommerziellen Gebrauch frei ist. –

+0

Das ist tatsächlich ein schreckliches Missverständnis. Exiv2 ist zweifach lizenziert GPL und kommerziell. GPL hat seine Anforderungen - ja - aber verbietet Ihnen nicht, es in kommerziellen Produkten zu verwenden. –

+0

Entschuldigung. Ist es in Ordnung, Exiv2 als Teil eines kommerziellen Produkts zu verwenden, wenn ich die Exiv2-Quelldateien nicht modifiziere (aber die Header-Dateien aus meinen Quelldateien einschließe und auf die Quelldateien verlinke)? –