exif Daten auslesen (freeimage_functions.pb aus engl. Forum)

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
heini
Beiträge: 26
Registriert: 20.05.2007 13:46
Wohnort: Essen

exif Daten auslesen (freeimage_functions.pb aus engl. Forum)

Beitrag von heini »

Hallo...

ich steh mal wieder wie der Ochs vorm Berg.... :oops:
Ich suche nun schon ein paar Tage nach Möglichkeiten die EXIF-Daten von jpg Bildern auszulesen. Habe auch die Userlibs EXIF und EXIFDate auf PureArea.net gefunden und versucht auszuprobieren. Leider kommen dort etliche Fehlermeldungen. Deshalb habe ich weiter gesucht und im Englischen Forum folgendes Topic gefunden:

http://www.purebasic.fr/english/viewtop ... efunctions

Ich habe die beiden Dateien "freeimage_functions.pb" und "freeimage_strcts.pb" gespeichert und per

Code: Alles auswählen

XIncludeFile "freeimage_functions.pb"
XIncludeFile "freeimage_sructs.pb"
in die Hauptdatei eingebunden.

Kann mir jemand kurz erklären wie ich diese Prozeduren nun nutzen kann ??
Ich möchte z.B. das Aufnahmedatum mit Uhrzeit in einem Textgadget anzeigen.

Was ist z.B. mit "dib.l", "tag.l" oder "model.l" gemeint ?
Blicke noch nicht so ganz durch !! :oops: :oops:

Vielen Dank schon mal vorab für Eure Untestützung !!!

Marco
Arbeit adelt.
Aber Adel arbeitet nicht...
  • PB 4.10
  • PBOSL 2.0 (27.01.2007)
  • HelpMaker 7.3.23.0
Benutzeravatar
heini
Beiträge: 26
Registriert: 20.05.2007 13:46
Wohnort: Essen

Beitrag von heini »

Hallo....

sorry... wenn ich nochmal nachfrage !!! :oops: :oops:

Ist die Antwort so simpel, das auch nen Anfänger wie ich drauf kommen muss ?

ODER

ist es so schwer, das mir das keiner beantworten kann ? :shock:

Gruss

Marco
Arbeit adelt.
Aber Adel arbeitet nicht...
  • PB 4.10
  • PBOSL 2.0 (27.01.2007)
  • HelpMaker 7.3.23.0
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Beitrag von dige »

mit "dib = freeimage_load()" öffnest du das bild und bekommst einen
zeiger auf das bild im speicher.

über diesen zeiger laufen dann alle freeimage aktionen.

wenn du also zum bsp. metadaten lesen möchtest rufst du FreeImage_GetMetadata () auf.

die parameter: FREE_IMAGE_MDMODEL.l, dib, *KeyName, *fitag
werden wie folgt ergänzt:

FREE_IMAGE_MDMODEL -> #FIMD_EXIF_MAIN ( für Exif Daten )
dib -> der Zeiger vom geladenen bild
*KeyName -> Der Name des Schlüssels. Zum Bsp.: "Make" für den Hersteller
*fitag -> Zeiger auf den Ergebnis-Speicher

für PB sieht das dann so aus:

Code: Alles auswählen

file.s = "test.jpg" ; Dateiname des zu ladenden Bildes
key.s  = "Make"     ; Zu lesender Exif Marker

dib = FreeImage_Load( #FIF_JPEG, @file, #Null )
If dib
  If FreeImage_GetMetadata (#FIMD_EXIF_MAIN, dib, @key, @Result.l )
    If Result
      ; Ergebnisspeicher in String umwandeln und ausgeben
      Debug PeekS(FreeImage_TagToString(  #FIMD_EXIF_MAIN, Result, #Null ))
    EndIf
  EndIf
EndIf
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
heini
Beiträge: 26
Registriert: 20.05.2007 13:46
Wohnort: Essen

Beitrag von heini »

Hallo dige...

mir ist es schon fast peinlich :oops: zu fragen....

ich blicke es immer noch nicht so ganz....

Code: Alles auswählen

XIncludeFile "freeimage_functions.pb"
XIncludeFile "freeimage_struct.pb"

file.s = "C:\Dokumente und Einstellungen\heini\Eigene Dateien\Eigene Bilder\IMG_0104.JPG" ; Dateiname des zu ladenden Bildes
key.s  = "Make"     ; Zu lesender Exif Marker

dib = FreeImage_Load( #FIF_JPEG, @file, #Null )
If dib
  If FreeImage_GetMetadata (#FIMD_EXIF_MAIN, dib, @key, @Result.l )
    If Result
      ; Ergebnisspeicher in String umwandeln und ausgeben
      Debug PeekS(FreeImage_TagToString(  #FIMD_EXIF_MAIN, Result, #Null ))
    EndIf
  EndIf
EndIf
drücke ich nun F5, passiert folgendes:

tabwechsel in freeimage_functions.pb, 2. Zeile ist markiert und ein Messagerequesterfenster öffnet sich, in dem steht:

Zeile 2: Constant not found: #LIB_FREEIMAGE

Fehlt mir da noch irgend was ? :oops:

Bitte entschuldigt meine Unwissenheit !!! :oops:

Gruss
Marco
Arbeit adelt.
Aber Adel arbeitet nicht...
  • PB 4.10
  • PBOSL 2.0 (27.01.2007)
  • HelpMaker 7.3.23.0
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Beitrag von dige »

hallo marco,

du scheinst ja noch recht grundlegende probleme zu haben.

da ich die includes aus dem forum nicht verwende kann ich nur raten
was das für eine fehlermeldung ist.

ich vermute mal das du die konstante #LIB_FREEIMAGE selbst definieren
musst.

Wenn du nur die freeimage dll öffnest kannst du ja

Code: Alles auswählen

#LIB_FREEIMAGE = 0
als erste Code Zeile (vor den Includes ) hinzufügen.

Suche Dir am besten erstmal alle Codebeispiele im Deutschen / Englischen
Forum zusammen und probier damit erstmal.

Denn die Aufgabe die Du dir mit dem metadaten gestellt hast, ist schon
etwas anspruchsvoller, da hier auch grundlegende programmierkenntnisse
erforderlich sind.
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
heini
Beiträge: 26
Registriert: 20.05.2007 13:46
Wohnort: Essen

Beitrag von heini »

Hallo dige....

vielen Dank für Deine Bemühungen !!!
Ich denke Du hast recht, das ist wohl ne ziemliche Nuss für nen Anfänger... hatte es mir nicht so schwierig vorgestellt.

Hab mir jetzt erstmal die noch fehlende freeimage.dll runtergeladen, und werd mal noch nen bisschen hier und im Englischen Forum weiterlesen.
Weil... ich würds doch schon ganz gerne irgendwie in mein vorhandenes Projekt:

http://www.purebasic.fr/german/viewtopic.php?t=13619

versuchen, mit ein zu bauen. :roll:

Gruss
Marco
Arbeit adelt.
Aber Adel arbeitet nicht...
  • PB 4.10
  • PBOSL 2.0 (27.01.2007)
  • HelpMaker 7.3.23.0
Antworten