![]() |
JPG (oder JPEG) und Kommentar oder Exif-Daten
ich möchte in Jpg-Bilddateien kurze Beschreibungen über das Bild speichern.
Dafür bietet sich das Exif-Format an Informationen über das Exif-Format in JPG´s gibt es im Internet z.B. bei ![]() ![]() Entsprechend dem Tutorial ![]() direkt nach dem Header FF D8 die Exif-Sequenz FF-D8-FF-E1-HL-LL-45-78-69-66-00-00-49-49-2A-00-08-00-00-00 eingefügt, wobei für die Satzlänge HL LL = 00 19 = Gesamtlänge von 25 Zeichen eingegeben wird. Leider führt das Beispiel zu einem nicht mehr lesbaren Format. Wahrscheinlich darf die FF D8-Sequenz auch nicht direkt nach den ersten 2 Bytes eingefügt werden oder der Aufbau stimmt nicht (?!)
Delphi-Quellcode:
Hat jemand einen Tipp für mich wie ich weiterkomme? Es soll auch die Möglichkeit geben, einen einfachen Kommentar in eine JPG einzubinden, ohne gleich die ganze Exif-Geschichte programmieren zu müssen. Das würde mir auch schon genügen
{******************************************************************************}
{* Exif-Daten ändern *} {******************************************************************************} procedure TForm1.WriteExifStream(SelectedRoot, SelectedFile: string); var fs: TFileStream; ba, bb: array of byte; i: integer; begin if AnsiLastChar(SelectedRoot)^ <> '\' then SelectedRoot := SelectedRoot + '\'; fs := TFilestream.Create(SelectedRoot + SelectedFile ,fmopenread or fmShareDenyNone); SetLength(ba, fs.Size); fs.Read(ba[0], Length(ba)); SetLength(ba, fs.Size); SetLength(bb, fs.Size + 25); fs.Free; //zu Testzwecken einfach mal Byte für Byte den Header FF D8 und danachdie kurze Exif-Sequenz bb[0] :=255; //FF bb[1] :=216; //D8 bb[2] :=255; //FF bb[3] :=225; //E1 bb[4] :=00; //HL bb[5] :=19; //LL bb[6] :=69; //45; bb[7] :=120; //78; bb[8] :=105; //69; bb[9] :=102; //66; bb[10]:=00; bb[11]:=00; bb[12]:=73; //49; bb[13]:=73; //49; bb[14]:=0; bb[15]:=8; bb[16]:=0; bb[17]:=0; bb[18]:=0; bb[19]:=0; bb[20]:=0; bb[21]:=0; bb[22]:=0; bb[23]:=0; bb[24]:=0; bb[25]:=0; //der Rest der Originaldatei wird nach Byte 25 angehängt for i := 2 to High(ba) do begin bb[i+25]:= ba[i]; end; //Buffer bb in neues File fs := TFileStream.Create(SelectedRoot + 'Neu.jpg', fmCreate); try fs.Writebuffer(bb[0], Length(bb)); finally fs.Free; end; end; Ralf |
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
Entschuldigung, ich habe die Frage in einer völlig falschen Rubrik gestellt. Daher habe ich Sie nochmals neu im korreten Themenbereich gestellt. Kann ich diese Frage an der falschen Stelle wieder löschen?
|
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
Da kümmern wir uns schon drum :)
|
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Internet / LAN / ASP.NET" nach "Multimedia" verschoben.
*schieeeeeeeeeb* |
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
hi ralf,
ich glaube du bist auf einem falschem weg ... richtig ist das jpg exif daten beinhalten können - die kannst/solltest nicht verändern [das sind meistens daten über die kamera mit der ein bild erstellt wurde] um informationen in jpg einzufügen wurde iptc [international press telecommunication council] entwickelt --> das sollte auch dein stichwort sein zu dem hast du einen bestimmten aufbau zu befolgen, wie du es ja schon aus deiner fkt sehen kannst - denn jeder bereich beginnt mit einem marker , dann länge, dann daten oder offset usw. FF D8 Bild beginn FF D9 Bild ende FF E1 EXIF Daten FF ED IPTC Daten FF ... usw ich hoffe ich habe dich auf den richtigen weg gebracht, ansonsten einfach fragen zu dem thema stellen und ich bemühe mich sie zu beantworten ... |
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
leider finde ich keine einfach verständliche IPTC-Spezifikation. Hier im Forum scheint sich noch niemand damit auseinandergesetzt zu haben, beim Googeln habe ich bei Wikipedia
![]() ![]() In meinen Bilddateien finde ich gleich zweimal die Zeichenfolge FF D8 und eine Zeichenfolge FF E1 aber nach FF E1 kommt gleich FF E2 02 F9 02 46 03 47, wo ist denn da genau die Länge des Exif gespeichert, da ich ja wohl direkt im Anschluß meine IPTC-Zeichenfolge eingeben muss Auf der Seite ![]() IPTC-Feldname IPTC-Id IPTC-Feldbeschreibung Object Name #005 Name des Objektes Edit Status #007 Der Bearbeitungsstatus Priority (Urgency) #010 Die Priorität Category #015 Die Kategorie Supplemental Category #020 Zusätzliche Kategorien wenn vorhanden Keywords #025 Keywörter für die Suche ........ Caption #120 Beschreibung Unter Caption könnte ich ja passend meine Bildbeschreibung unterbekommen! Ein kleiner Tipp wäre wunderbar Danke Ralf |
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
hi ralf,
wenn du wirklich interessiert bist dann kann ich später hier einige erläuterungen geben. wenn es dir zu umständlich sein sollte bringt dich vllt. folgendes weiter von luckie ![]() cya |
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
mal zwischendurch:
bin noch zusätzlich auf etwas gestoßen ... Zitat:
|
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
versuch einer erklärung:
in deinem jpg header findest du den tag FFE1 [der steht für EXIF daten] -> wenn nun danach gleich der nächste tag mit FFxx kommt dann hast du keine EXIF daten -> ansonsten mal ein kleiner ausschnitt (hex): FF E1 00 56 45 78 69 66 00 00 49 49 2A 00 08 00 00 00 01 00 9C 9C 01 00 34 00 00 00 1A 00 00 00 ... FF E1 -> EXIF Tag 00 56 -> Länge des Bereichs , also 86 Bytes 45 78 69 66 00 00 -> EXIF Name 49 49 -> Byte Order, hier Intel [Little Endian] !!! wichtig !!! 2A 00 -> TIFF Kennung (Tagged Image File Format) 08 00 00 00 -> IFD, File Descriptor - gibt an ob daten gleich folgen oder ob ein offset hinterlegt ist 01 00 -> Anzahl der EXIF Elemente - hier also 1 9C 9C -> EXIF Element - hier also Kommentar (s.o.) 01 00 -> Datentyp - hier Bytes 34 00 00 00 -> Länge - hier also 52 Bytes / Zeichen 1A 00 00 00 -> Entweder wert selbst oder offset wo daten zu finden sind - hier offset nun könnte man also zur position 1A[hex] innerhalb der datei und von dort an 52 Bytes auslesen und man hätte den hinterlegten kommentar .... -> das schreiben erfolgt nun genauso # prüfen ob Tag FF E1 vorhanden - wenn nicht -> erzeugen - wenn ja prüfen ob Element 9C9C vorhanden - nein -> erzeugen - ja -> inhalt abändern beim schreiben auf die struktur achten -> !Byte Order! und den richtigen Aufbau beibehalten - dann gibts keine Probleme ... hoffe geholfen zu haben cya Soulies |
Re: JPG (oder JPEG) und Kommentar oder Exif-Daten
Super, das sind ja eine ganze Handvoll Tipps. Da das ganze für mich völlig neu ist, benötige ich aber einige Tage alles auszuprobieren. Ich hake die Frage daher erst mal als beantwortet ab. Falls ich einen vorzeigefähigen Code herausfinde, werde ich die nächsten Tage nochmals eine Antwort anhängen
Gruß Ralf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz