AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi JPG (oder JPEG) und Kommentar oder Exif-Daten
Thema durchsuchen
Ansicht
Themen-Optionen

JPG (oder JPEG) und Kommentar oder Exif-Daten

Ein Thema von Ralf Stehle · begonnen am 5. Sep 2007 · letzter Beitrag vom 30. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 08:03
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
EXIF-Daten in JPEG-Dateien.pdf oder http://www.exif.org/

Entsprechend dem Tutorial EXIF-Daten in JPEG-Dateien.pdf habe ich versuchsweise mit folgenden Code
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:
{******************************************************************************}
{*                             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;
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

Ralf
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#2

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 08:19
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?
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#3

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 08:33
Da kümmern wir uns schon drum
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
5. Sep 2007, 08:33
Dieses Thema wurde von "Phoenix" von "Internet / LAN / ASP.NET" nach "Multimedia" verschoben.
*schieeeeeeeeeb*
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#5

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 10:54
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 ...
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#6

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 12:32
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 http://de.wikipedia.org/wiki/IPTC-NAA-Standard und die Seite http://www.m-software.de/iptc-felder.html gefunden

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 http://www.m-software.de/iptc-felder.html finde ich eine Liste mit den IPTC-Feldern, kannst Du mir an einem Feld zeigen, wie ich das umsetzen muss? (FF ED 2 Bytes für die Länge #120 Bytes für Beschreibung....?)

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
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#7

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 13:03
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
http://www.michael-puff.de/Developer...Comment1_0.zip


cya
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#8

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 13:59
mal zwischendurch:

bin noch zusätzlich auf etwas gestoßen ...

Zitat:
For instance, in JPEG format, we use EXIF tags for summary information storage, so if you want to access the summary filed of a JPEG file, you have to use the standard EXIF way, every EXIF tag has a Tag ID, as defined, the following is the Tag IDs for common properties:


9c9b = Title

9c9c = Comment

9c9d = Author

9c9e = Keywords

9c9f = Subject
bedeutet also das M$ ihre infos doch als exif ablegt - zu den kennungen später mehr ....
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#9

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 17:23
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
  Mit Zitat antworten Zitat
Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#10

Re: JPG (oder JPEG) und Kommentar oder Exif-Daten

  Alt 5. Sep 2007, 21:06
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz