Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi EXIF Tag der Panasonic Lumix auslesen (https://www.delphipraxis.net/138085-exif-tag-der-panasonic-lumix-auslesen.html)

I love Delphi 3. Aug 2009 13:03


EXIF Tag der Panasonic Lumix auslesen
 
Hallo Leute,
habe mal wieder ein Problem, diesmal sogar ein besonders kniffliges.
Und zwar: Ich habe im Urlaub viele Bilder gemacht und die Funktion mein Panasonic Lumix DMC-FZ 28 genutzt, den Bildern jeweils einen Titel zu verpassen. (Wie ich finde eine sehr praktische Funktion für unterwegs!)

Nun kann jedoch Picasa, welches ich zum Verwalten der Bilder benutze, diesen Titel nicht übernehmen. Deswegen wollte ich mir ein Programm schreiben, welches den Inhalt des Titel-EXIF-Tags der Kamera in den allgemeinen Kommentar-EXIF-Tag schreibt. Leider habe ich keine Ahnung wie ich das jetzt genau anstellen soll, ich habe zwar schon ein Programm in der Art geschrieben, trotzdem komme ich nicht weiter.

Wäre echt toll wenn mir jemand weiter helfen könnte,
vielen Dank,
I love Delphi!

GPRSNerd 3. Aug 2009 13:12

Re: EXIF Tag der Panasonic Lumix auslesen
 
Welche Komponente/Library/Unit hast du denn bisher benutzt zum Bearbeiten der EXIF-Tags? dExif?
Wenn ja, dann kann ich dir evtl. weiterhelfen...

I love Delphi 3. Aug 2009 13:14

Re: EXIF Tag der Panasonic Lumix auslesen
 
Bisher habe ich folgende Unit benutzt:
http://mcguirez.homestead.com/downloads.html

GPRSNerd 3. Aug 2009 13:20

Re: EXIF Tag der Panasonic Lumix auslesen
 
Das ist dExif, dann könnte ich dir helfen...

Zeig mal deinen bisherigen Code, dann schauen wir mal!

I love Delphi 3. Aug 2009 13:39

Re: EXIF Tag der Panasonic Lumix auslesen
 
Meinst du den vom aktuelen Problem? Da gibt es ja noch keinen. Wie das mit dem Schreiben in den Kommentar-Tag gehen soll weiß ich auch schon, nur das mit dem auslesen...

Den vom alten müsste ich erst noch suchen...
War aber auch nicht wirklich einsatztauglich das Programm...

Grüße,
I love Delphi!

GPRSNerd 3. Aug 2009 13:50

Re: EXIF Tag der Panasonic Lumix auslesen
 
Um welchen EXIF-Tag geht es beim Titel genau? "ImageTitle"? "Title?"

Auslesen kannst du die Tags folgendermaßen, gesetzt den Fall, dass du den Exif-Header mit den dExif-Funktionen in ImgData eingelesen hast:
Delphi-Quellcode:
exif_str:=string(ImgData.ExifObj.LookupTagVal('ImageTitle'));
Setzen kannst du dann Kommentare mit:
Delphi-Quellcode:
ImgData.ExifObj.SetExifComment(exif_str);
ImgData.ExifObj.Comments := exif_str;
Häng doch mal ein Beispielbild an mit den Tags zum Ausprobieren...

I love Delphi 5. Aug 2009 12:47

Re: EXIF Tag der Panasonic Lumix auslesen
 
Sorry erstmal, dass ich solange nicht mehr geantwortet habe,
musste leider feststellen, dass ein großer Teil meiner Urlaubsfotos irgendwie gelöscht worden ist. Jetzt wo ich sie zum größten Teil wieder hergestellt habe, widme ich mich wieder dem alten Problem.

Ich konnte bisher mit keinem Programm den entsprechenden Tag finden. Zwar befindet sich auf der SD-Karte auch noch eine Binäre-Datei, ich glaube jedoch das der Inhalt im EXIF steht, da er auch nur eine begrentzte Länge haben darf.

Bild: Blick auf ...

Vielen Dank für Eure Mithilfe!

Grüße,
I love Delphi!

GPRSNerd 5. Aug 2009 13:03

Re: EXIF Tag der Panasonic Lumix auslesen
 
Ich habe gerade den kompletten EXIF-Header mit einem meiner Programme mal gedumpt, kann in dem Bild aber keinen entsprechenden String finden. Was sollte den da drin sein? Welcher String?
Ist wahrscheinlich doch in der propietären BIN-Datei...

GPRSNerd 5. Aug 2009 13:06

Re: EXIF Tag der Panasonic Lumix auslesen
 
Mit dem Hex-Editor aus dem Anfang des Bildes: BLICK AUF "ES TALAIER"

Edit: Steht im EXIF-Header als "Unknown"-Tag, kriege ich ausgegeben, wenn ich Verbose-Traces beim Dekodieren einschalte:

...
Sharpness = Normal
Unknown = "PrintIM"
Unknown = "BLICK AUF "ES TALAIER""
Unknown = "BLICK AUF "ES TALAIER""

Da musst du wohl die EXIF-Spezifikation von Panasonic für dein Kamera-Modell besorgen und die Tag-Definitionen in dEXIF erweitern. :shock:

GPRSNerd 5. Aug 2009 13:27

Re: EXIF Tag der Panasonic Lumix auslesen
 
Die EXIF-Tag-IDs für die beiden identischen Titel-Einträge sind:

$C6D2
$C6D3

I love Delphi 5. Aug 2009 15:15

Re: EXIF Tag der Panasonic Lumix auslesen
 
Vielen Dank erstmal,
aber wie (wenn überhaupt möglich) kann ich dann mit dExif die Daten auslesen?

Danke nochmal,
I love Delphi!

GPRSNerd 5. Aug 2009 17:26

Re: EXIF Tag der Panasonic Lumix auslesen
 
Steht doch in Post #6!
Wenn du die neuen Tags zu dExif hinzugefügt hast, kannst du so die Tags auslesen und in die Kommentare schreiben.
Jetzt ist wohl mal ein wenig Eigeninitiative von dir gefragt...

Oder verstehe ich die Frage falsch? :gruebel:

PS: Sind das denn jetzt die Strings, um die es geht???

I love Delphi 6. Aug 2009 07:40

Re: EXIF Tag der Panasonic Lumix auslesen
 
Danke GRPSNerd für die umhauende Hilfestellung.
Die Strings sind die richtigen, warum die aber doppelt drin stehen weiß ich auch nicht.
Leider weiß ich jedoch nicht wie ich die neuen Tags zu dEXIF hinzufüge. Auch im mitgelieferten ProgrammersGuide.txt und in der Readme.txt finde ich darüber nichts.

Es wäre nett, wenn du mir noch dieses eine letzte mal helfen würdest! :)

Grüße,
I love Delphi!

GPRSNerd 6. Aug 2009 08:53

Re: EXIF Tag der Panasonic Lumix auslesen
 
OK, ein letztes Mal noch, obwohl es eigentlich ziemlich simpel ist...

Folgende Zeilen musst du in dEXIF.pas ändern/hinzufügen:

Delphi-Quellcode:
...
   GPSCnt = 30;
   ExifTagCnt = 250+2; //ändern!!!
   TotalTagCnt = GPSCnt+ExifTagCnt;
...
  (Tag: $A420; Name:'ImageUniqueID'          ; Code:'0:Close view,1:Distant view'),

  (Tag: $C6D2; Name:'PanasonicTitle1'       ), //hinzufügen
  (Tag: $C6D3; Name:'PanasonicTitle2'       ), //hinzufügen

  (Tag: 0;     Name:'Unknown'));
...
Wenn ich jetzt die EXIF-Daten dumpe, bekomme ich folgenden Auszug:

Panasonic Title1 = "BLICK AUF "ES TALAIER""
Panasonic Title2 = "BLICK AUF "ES TALAIER""

Diese Tags kannst du jetzt auslesen und in die Comments schreiben.

Edit: Das Speichern ist allerdings ein wenig komplizierter als ursprünglich gedacht:
dEXIF kann den EXIFHeader nicht manipulieren und neu schreiben, einfügen von Comments in den JPEGHeader geht aber.
Hier mal ein Codeschnipsel, mit dem das Auslesen der Tags und Einfügen in die Comments es geht. Mein Standardbildbetrachter zeigt die Kommentare jetzt an.
Delphi-Quellcode:
//Panasonic Tags ---------------------------------------------------
exif_tmp := string(ImgData.ExifObj.LookupTagVal('PanasonicTitle1'));
if exif_tmp <> '' then
begin
  e1.Text:=exif_tmp;
end;

exif_tmp := string(ImgData.ExifObj.LookupTagVal('PanasonicTitle2'));
if exif_tmp <> '' then
begin
  e2.Text:=exif_tmp;
end;

if ((e1.Text<>'') or (e2.Text<>'')) then
begin
  ImgData.MakeCommentSegment(ansistring(e1.Text + crlf + e2.Text));
  SaveDialog1.FileName := string(ImgData.Filename);
  if SaveDialog1.Execute then
  begin
    ImgData.WriteEXIFJpeg(AnsiString(SaveDialog1.FileName));
  end;
end; // ------------------------------------------------------------
PS: Diese ganzen Typecasts nach string und ansistring sind bedingt durch Delphi 2009 und meiner Unicode-Portierung von dEXIF.

I love Delphi 6. Aug 2009 12:57

Re: EXIF Tag der Panasonic Lumix auslesen
 
Hallo und danke nochmal,
habe den letzten Schritt jetzt auch hinbekommen. Leider war das alles recht umsonst, den mein Bildverwalter (Picasa von Google) speichert seine Kommentare zu Bildern im EXIF-Tag der Datei.

Naja, hab' ja trotzdem einiges gelernt!

Vielen Dank,
I love Delphi!

I love Delphi 6. Aug 2009 20:54

Re: EXIF Tag der Panasonic Lumix auslesen
 
Nochmal ich :),
hat sonst vll. noch jemand eine Idee, wie man das Problem lösen kann?

Viele Grüße,
I love Delphi!

juergen 8. Aug 2009 15:53

Re: EXIF Tag der Panasonic Lumix auslesen
 
Hallo,

direkt auf der Seite von Embarcadero findest du wohl alles was du benötigst. :thumb:
So wie es ausschaut,muss man aber vor dem Ändern der Tags ein Dump des Exif machen, ansonsten wäre alles weg (zumindest habe ich keinen anderen Weg gefunden).
Es sind sehr gute Beispiele mit dabei, so dass eigentlich alles klappen sollte.
Panasonic-Lumix-Exif

Edit: in der Doku wird die Klasse "TExifDataPatche" aufgeführt. Damit ist das Bearbeiten der jeweiligen Tag.ID möglich ohne dass die anderen Tag's bzw. Section's geändert werden. Siehe hierzu auch das Beispiel "TimeShift".


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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