Wow, mein Account gibts noch.....
Hallo Forum,
ich kloppe mir gerade eine Bilddatenbank, die Fotoalben und Ordnungsfunktion hat, zusammen. Das ist auch alles ziemlich fertig und schon im Gebrauch, nun habe ich (leider) festgestellt, dass es da sowas wie exif gibt, so eine art id3-Tags für Bilder. Und nun habe ich von exif auch kaum Ahnung.
Zum Auslesen habe ich hier diese FreeImage im Forum gefunden. Nur war in meinen Downloadversuchen kein DLL dabei und so eine MiniLib habe ich auch finden können, nur hat die keine Schreibfunktion.
Dann habe ich in die Exif-Dokumentation reingeguckt nur blicke ich da nicht durch, weil da alles möliche drinsteht und ich das gesuchte vor lauter Infos nicht finden kann, so dass ich nicht wüsste, wie ich mir selber was zusammenfummeln sollte.
Das dicke Problem: Das Teil ist mit Bearbeitungsmöglichkeit (So Effektsachen, wie Farbkorrektur, Weichzeichnen, Scharfzeichnen, Drehen, Fotomontierfunktion, Spiegeln, Rauschentfernung, Retuschepinsel usw.), so dass ich es auch mit Speichern zu tun habe. Die Effekte habe ich in DLL's ausgelagert, die nur mundgerechte Bitmaps bekommen, so dass die die exif-Daten nicht durch die Bildbearbeitung müssen. Ich brauche die Infos also nur im Hauptprogramm, in der .exe
Ungefähr so stelle ich mir das vor:
1. LoadImage/Createimage Mein bild
2. Load die Exif-Informationen und parke sie irgendwo in Speicherblöcken oder Variablen (und zeige sie dem User in der Statusbar an, wo reichlich platz wäre)
3. Schicke das Bild in eine Bearbeitungs-DLL, falls ein Filter angeklickt wurde
4. Das Bild kommt bearbeitet von der DLL zurück (Das Programm wartet auf die DLL, bis sie fertig ist)
5. Das SaveImage wird irgendwie so frisiert (es gibt nur ein einziges im Programm), dass das Bild zusammen mit den Exif-Daten neu gespeichert wird.
Die Exif sollen auch veränderbar sein, weil ich scanne mit dem Ding gerade die alten Analogfotos ein und würde gerne ne Jahreszahl dabei schreiben können.
Ich brauche die Exif auf jeden Fall bis saveimage getrennt von den Bildern, weil ich die Schnittstelle für die Bearbeitungsfunktionen nicht nochmal ändern möchte, weil das mittlerweile 30 dlls sind, die ich alle ändern und neu kompilieren müsste, worauf ich keinen Bock habe.
Vllt kann man das auch gleich das Problem mit abfrühstücken, dass ich keine GIF's in loadimage öffnen kann.
Ich habe irgendwie meine liebe zu DLLs gewonnen, weil man die so anbinden kann, dass man das Programm durch simples in-unterordner-kopeiren erweitern kann, ohne am hauptprogramm neu zu kompilieren
Am liebsten wäre mir auch hier eine DLL dafür, weil ich nicht alles in eine einzige exe reinstopfen will. Aber ein pb-eigenes include oder nen Codeschnippel geht natürlich auch.
Könnt ihr mir da weiterhelfen?
gruß franky
exif lesen und auch schreiben -> dll?
Re: exif lesen und auch schreiben -> dll?
Im englischen Forum findest du einen Code, der das reine kopieren (also beibehalten) der Exif-Daten behandelt. Such dort einfach mal, da gibt's noch ein paar andere Lösungen, die nicht von irgendwelchen Dlls & Co abhängig sind.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: exif lesen und auch schreiben -> dll?
So, habe dort einen solchen Code gefunden:
http://www.purebasic.fr/english/viewtop ... =read+exif
Daraus habe ich mir zwei Proceduren gemacht. Eine ließt aus einer Datei die EXIF aus und gibt einen Zeiger darauf zurück. Die andere nimmt den Zeiger entgegen und speichert die Datei. Ich habe das ganze ein klein bisschen so umgeändert, dass der Speicher, auf den der Zeiger zeigt, 4 Byte größer ist und der EXIF da drin um diese 4 Byte versetzt abgelegt wird, so dass davor noch ein Long passt. Dieser enthält die Länge des Speicherbereiches, so dass ich die Längenvariable nicht mitführen muss.
Das Übertragen auf das editierte Bild funktioniert daher schonmal. Danke!
Aber wie funktioniert dieser Tag? Habe ihn mal ohne Bild in eine .txt getan und in einem Hex-Editor geöffnet. Da hat sich mir nicht wirklich erschlossen, wie das ganze aufgebaut ist. Hatte irgendwie eine Struktur aus Labels und deren Werte erwartet, so wie bei MP3-Dateien.
http://www.purebasic.fr/english/viewtop ... =read+exif
Daraus habe ich mir zwei Proceduren gemacht. Eine ließt aus einer Datei die EXIF aus und gibt einen Zeiger darauf zurück. Die andere nimmt den Zeiger entgegen und speichert die Datei. Ich habe das ganze ein klein bisschen so umgeändert, dass der Speicher, auf den der Zeiger zeigt, 4 Byte größer ist und der EXIF da drin um diese 4 Byte versetzt abgelegt wird, so dass davor noch ein Long passt. Dieser enthält die Länge des Speicherbereiches, so dass ich die Längenvariable nicht mitführen muss.
Das Übertragen auf das editierte Bild funktioniert daher schonmal. Danke!

Aber wie funktioniert dieser Tag? Habe ihn mal ohne Bild in eine .txt getan und in einem Hex-Editor geöffnet. Da hat sich mir nicht wirklich erschlossen, wie das ganze aufgebaut ist. Hatte irgendwie eine Struktur aus Labels und deren Werte erwartet, so wie bei MP3-Dateien.

Re: exif lesen und auch schreiben -> dll?
Keine Sorge, so ein großer Unterschied zu den ID3-Tags besteht gar nicht. Hier ein Beispiel zum lesen des Exif-Datums:
http://www.purebasic.fr/english/viewtop ... 13&t=15592
http://www.purebasic.fr/english/viewtop ... 13&t=15592
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Re: exif lesen und auch schreiben -> dll?
Der Reader war ein wenig fehlerhaft, lies sich aber auf anhieb beheben und funktioniert jetzt.
Danke!
Danke!


Re: exif lesen und auch schreiben -> dll?
Wenn Du die Exif Infos in Bilder schreiben möchtest, die Du
bearbeitet hast, würde ich die FreeImage Dll nehmen.
bearbeitet hast, würde ich die FreeImage Dll nehmen.
"Papa, ich laufe schneller - dann ist es nicht so weit."