Exif bzw. IPTC

Rund um die LCL und andere Komponenten

Exif bzw. IPTC

Beitragvon ufkpra2 » 2. Jul 2010, 11:56 Exif bzw. IPTC

Hallo.

Kennt von Euch jemand eine Komponente bzw. Bibliothek für Free Pascal, um Metadaten (Exif und/oder IPTC) aus Jpeg Fotos auszulesen bzw. zu schreiben?

Gruß und besten Dank!
ufkpra2
 
Beiträge: 32
Registriert: 14. Mai 2010, 13:47
Wohnort: Ulm
CPU-Target: i386
Nach oben

Beitragvon Socke » 2. Jul 2010, 12:54 Re: Exif bzw. IPTC

Ob es FreePacal-Units gibt, die diese Aufgabe nativ lösen, weiß ich nicht.
Als externe Bibliotheken gibts die libexiv2 http://www.exiv2.org/, welche EXIF, IPTC und XMP-Metadaten bearbeiten kann. Sie ist aber unter der GNU GPL lizensiert (d.h. dein Programm muss auch quelloffen sein (GPL?)).
Da die Bibliothek in C++ geschrieben ist, solltest du dir mal diesen Beitrag ansehen, http://www.lazarusforum.de/viewtopic.php?f=29&t=3943&p=39014#p39014, da C++-Klassen nicht direkt unterstützt werden.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2393
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon mschnell » 2. Jul 2010, 13:20 Re: Exif bzw. IPTC

Socke hat geschrieben:Als externe Bibliotheken gibts die libexiv2 http://www.exiv2.org/, welche EXIF, IPTC und XMP-Metadaten bearbeiten kann. Sie ist aber unter der GNU GPL lizensiert (d.h. dein Programm muss auch quelloffen sein (GPL?)).

Nö.

Die Bibiotheken sind in C geschrieben und müssen deshalb dynamisch angelinkt werden. Dynamisches Linken grenzt die GPL - Lizenz ab. nur statisches Linken ist "sticky". Bei Auslieferung des Programms muss also nur die DLL im Sourcecode mitgeliefert werden.

-Michael
mschnell
 
Beiträge: 3159
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon theo » 2. Jul 2010, 14:09 Re: Exif bzw. IPTC

Ich selbst hab da den einfachen Weg genommen. Unter Linux rufe ich einfach via TProcess exiftool auf und gut is.

NAME
exiftool − Read/write meta information

SYNOPSIS
exiftool [OPTIONS] [−TAG[[+−<]=[VALUE]] or −−TAG ...] [FILE ...]
theo
 
Beiträge: 7895
Registriert: 11. Sep 2006, 18:01

Beitragvon Socke » 2. Jul 2010, 15:57 Re: Exif bzw. IPTC

mschnell hat geschrieben:Die Bibiotheken sind in C geschrieben und müssen deshalb dynamisch angelinkt werden. Dynamisches Linken grenzt die GPL - Lizenz ab. nur statisches Linken ist "sticky". Bei Auslieferung des Programms muss also nur die DLL im Sourcecode mitgeliefert werden.

Exiv2 Webseite hat geschrieben:Exiv2 is a C++ library and [...]
weiter hab ich eigentlich auf deren Webseite nicht gelesen...

Zum Thema Statisch und Dynamisch kann man sich streiten. Wenn ich über die unit Dynlib die Funktionszeiger erst zur Laufzeit hole, ist das definitiv dynamisch. Wenn ich die compilierten Object-Files bzw. die binären Bibliotheks-Dateien (.lib) in mein Programm linke, ist das definitiv statisch. Wenn die Funktionszeiger aber erst zur Laufzeit durch den OS-Linker zugewiesen werden, was ist das dann?

theo hat geschrieben:Ich selbst hab da den einfachen Weg genommen. Unter Linux rufe ich einfach via TProcess exiftool auf und gut is.

Das geht natürlich auch.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2393
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon mschnell » 3. Jul 2010, 10:18 Re: Exif bzw. IPTC

Socke hat geschrieben:Wenn die Funktionszeiger aber erst zur Laufzeit durch den OS-Linker zugewiesen werden, was ist das dann?
libc und Genossen weden in Linux als so "dynamisch" gelinkt. Die sind GPL und offensichtlich nicht "sticky".

-Michael
mschnell
 
Beiträge: 3159
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon Socke » 3. Jul 2010, 18:25 Re: Exif bzw. IPTC

Die libc6 auf meinem Debian behauptet unter der GNU LGPL lizenziert zu sein, daher gibts hier auch keine Probleme. Wenn aber ein {$linklib XY} für eine GPL Bibliothek auftaucht, wird irgendetwas statisch gelinkt und damit musst du dein Programm auch unter der GPL lizenzieren.

Ich frage mich nur gerade, wie das mit den Kernel-Syscalls funktioniert...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2393
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon mschnell » 4. Jul 2010, 10:35 Re: Exif bzw. IPTC

Socke hat geschrieben:Die libc6 auf meinem Debian behauptet unter der GNU LGPL lizenziert zu sein, daher gibts hier auch keine Probleme.

Da hast Du natürlich (fast) recht.

"Fast" insofern, als dass es bei LGPL auch Probleme mit statischem Linken gibt. Die LGPL verlangt, dass bei dieselben "Sticky" Kriterien wie bei der GPL angewendet werden (also statisches Linken ist "sticky"), dass aber die Auswirkung nicht ist, das das Ganze dann unter LGPL veröffentlicht werden muss, dass es aber dem End-User ermöglicht werden muss, spätere Updates auf die LGPL-Programmteile durchzuführen. Wie dass aber ohne Weitergabe das Source-Codes gehen soll weiß keiner so genau.
Socke hat geschrieben:Wenn aber ein {$linklib XY} für eine GPL Bibliothek auftaucht, wird irgendetwas statisch gelinkt und damit musst du dein Programm auch unter der GPL lizenzieren.
Ja. Durchgesetzt hat sich aber die Auffassung, das das für so-Dateien und DLLs unter GPL eben nicht so ist. (Inwieweit der oben genannt Teil der LGPL wirklich so gemeint ist wie es klingt und inwieweit der auch für .h-Dateien gilt, die zum Anbinden einer so/DLL und für Kernel API calls nötig sind, wird anscheinend immer noch diskutiert.)
Socke hat geschrieben:Ich frage mich nur gerade, wie das mit den Kernel-Syscalls funktioniert...
LGPL: S.o. Syscalls werden selten von "C"-User-Propgrammen direkt gemacht, meist stecken die Libraries. (die FPC-Leute möchten aber lieber das Einbinden der libc abschaffen und die Syscalls alle direkt in die RTL einbauen.) Aber Syscalls sind natürlich kein statisches Linken. Hier wird ja quasi einfach an eine feste Adresse gesprungen.

-Michael
mschnell
 
Beiträge: 3159
Registriert: 11. Sep 2006, 09:24
Wohnort: Krefeld
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ) | 
CPU-Target: X32 / X64 / ARMv5
Nach oben

Beitragvon MitjaStachowiak » 26. Jun 2016, 19:06 Re: Exif bzw. IPTC

Moin,
gibt's zu diesem Thema was neues?

Ich habe mal diese Unit versucht: http://www.delphipraxis.net/185459-exif-und-vorschaubild-aktuelle-freepascal-kompatible-unit.html, es compiliert, findet aber keine EXIF-Daten. Der Autor schreibt ja auch, dass es Probleme gibt und diese Unit kann nur lesen...

Ich möchte sowohl lesen, als auch schreiben. Eine externe DLL/Anwendung zu verwenden wäre möglich, aber auch so etwas anzubinden, ist Arbeit. Hat jemand einen praktikablen Header?

Also ich erstelle das Bild komplett neu (Resize, Helligkeit, Kontrast, ...), möchte die Exif-Daten aus dem Original übernehmen und zusätzlich einige davon ändern. Wie geht das am besten?
MitjaStachowiak
 
Beiträge: 320
Registriert: 15. Mai 2010, 12:46
OS, Lazarus, FPC: Win 7, Lazarus 32/64 (Codetyphon-Edition) | 
CPU-Target: 64 bit
Nach oben

Beitragvon wp_xyz » 26. Jun 2016, 22:07 Re: Exif bzw. IPTC

Zu Delphi-Zeiten gab es ein Tool namens dEXIF. Es war recht einfach nach Lazarus zu übertragen und hat in dem Fall. in dem ich es brauchte, gute Dienste geleistet, auch wenn es etwas chaotisch programmiert ist - siehe Anhang. Eine neuere Bibliothek ist ccr.exif (https://delphihaven.wordpress.com/ccr-exif/), aber hier hat mich bei der Portierung nach Lazarus jedesmal vorzeitig die Lust verlassen, weiterzumachen, weil es alle neuen Features von Delphi bis zum Exzess ausnutzt...
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
wp_xyz
 
Beiträge: 2280
Registriert: 8. Apr 2011, 08:01

Beitragvon MitjaStachowiak » 13. Jul 2016, 22:35 Re: Exif bzw. IPTC

Danke, ich habe die letzten Tage dies und das verändert und prinzipiell tut es jetzt, was es soll. Ich lese die Exifs ein, schreibe ein paar Werte (z.B. Artist, ImageDescription) und speichere das Ganze wieder in ein frisches Bild (ohne Thumbnail, IPTC, ...). Habe eine Whitelist gemacht, damit nur die "wichtigen" Tags gespeichert werden und vor allem die Funktion CreateExifBuf. Kann gut nachvollziehen, warum das so chaotisch ist - dieses Exif-Standard ist extrem buggy. Das Tag UserComment geht irgendwie nicht. Mein eigenes Programm kann es zwar auch der gespeicherten Datei wieder einlesen, aber alle anderen Programme erkennen es nicht. Hier mal der Anfang des JPGs mit EXIF-Block:

[Edit:] Damit es nicht zig Parallelversionen gibt, habe ich die Unit hier gelöscht, meine aktuellste Version finden Sie im Quellcode von meinem Slideshow-Creator: https://mitjastachowiak.de/?/projects/s ... index.html
Zuletzt geändert von MitjaStachowiak am 23. Jul 2016, 10:25, insgesamt 1-mal geändert.
MitjaStachowiak
 
Beiträge: 320
Registriert: 15. Mai 2010, 12:46
OS, Lazarus, FPC: Win 7, Lazarus 32/64 (Codetyphon-Edition) | 
CPU-Target: 64 bit
Nach oben

Beitragvon wp_xyz » 14. Jul 2016, 09:04 Re: Exif bzw. IPTC

Danke. Seh' gerade, als ich die Demos kompiliert habe, dass HeapTrc eine Menge Speicherlecks beklagt (auch nach Zurückwechseln auf meine ursprüngliche Version).
wp_xyz
 
Beiträge: 2280
Registriert: 8. Apr 2011, 08:01

Beitragvon MitjaStachowiak » 14. Jul 2016, 11:54 Re: Exif bzw. IPTC

Ich habe keine Speicherleaks in meinem Programm...
MitjaStachowiak
 
Beiträge: 320
Registriert: 15. Mai 2010, 12:46
OS, Lazarus, FPC: Win 7, Lazarus 32/64 (Codetyphon-Edition) | 
CPU-Target: 64 bit
Nach oben

Beitragvon wp_xyz » 14. Jul 2016, 12:09 Re: Exif bzw. IPTC

Dann liegt das vielleicht an den beigefügten Demos. Übrigens, das EXIF-Demo kann nach deiner Änderung (Entfernen von CommentXXX) nicht mehr compiliert werden.
wp_xyz
 
Beiträge: 2280
Registriert: 8. Apr 2011, 08:01

Beitragvon MitjaStachowiak » 14. Jul 2016, 12:27 Re: Exif bzw. IPTC

Ich lade heute Abend mein komplettes Projekt hoch.
MitjaStachowiak
 
Beiträge: 320
Registriert: 15. Mai 2010, 12:46
OS, Lazarus, FPC: Win 7, Lazarus 32/64 (Codetyphon-Edition) | 
CPU-Target: 64 bit
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried