ich möchte mit meinem Programm die Metadaten aus JPEGs lesen und bearbeiten können.
Ich bin schon ein paar Tage am suchen und testen doch brauche ich nun Hilfe.
Ich habe herausgefunden, dass der Einfachste Weg die Benutzung der FreeImage.dll ist, jedoch liegt genau dort mein erstes Problem.
Mein Programm öffnet bereits die DLL und leist die komplett verfügbaren Funktionen ein und zeigt sie mit an.
Ich kann mir auch die Copyright und Versionsinformationen anzeigen lassen, versuche ich aber die den FileType auszulesen, schlägt dies fehl.
Das erkenne ich am Rückgabewert -1 (fif unkown)
Ich vermute, dass es mit dem Dateinamen zu tun hat, dass ich diesen nicht richtig übergebe.
Die angegebene Datei existiert, das habe ich geprüft.
Ich habe es auch nur mit dem Dateinamen versucht und das Bild in das gleiche Verzeichnis, wie den Quelltext bzw. die DLL kopiert, auch hier klappt es nicht.
Der ErrorMessageHandler wirft mir auch keine passenden Infos aus.
Hat vielleicht jemand eine Idee?
Gruß scoty
Code: Alles auswählen
#FIF_UNKNOWN = -1
Prototype FreeImage_GetFileType(filename.s,flags.l=0)
Prototype RWFreeImage_GetFormatFromFIF (fif.l)
Prototype FreeImage_GetFormatFromFIF (fif.l)
Global FreeImage_GetFileType.FreeImage_GetFileType=GetFunction(0,"_FreeImage_GetFileType@8")
Global RWFreeImage_GetFormatFromFIF . RWFreeImage_GetFormatFromFIF = GetFunction(0, "_FreeImage_GetFormatFromFIF@4")
Global FreeImage_GetFormatFromFIF . FreeImage_GetFormatFromFIF = GetFunction(0, "_FreeImage_GetFormatFromFIF@4")
Procedure Sample_FreeImageErrorHandler(fif.l, message.l)
Debug " *** Sample_FreeImageErrorHandler START"
If fif <> #FIF_UNKNOWN
Debug PeekS(CallFunction(0, "_FreeImage_GetFormatFromFIF@4", fif))+" Format"
EndIf
Debug PeekS(message, -1, #PB_Ascii)
Debug " *** Sample_FreeImageErrorHandler END"
EndProcedure
If OpenFile(0, "c:\dll\FreeImage.dll")
Debug "Die Biblithek wurde ortnungsgemäß gefunden"
Debug " "
CloseFile(0)
Else
Debug "Die Bibliothek FreeImage konnte nicht gefunden werden!"
EndIf
Debug "Bibliothek wird geöffnet:"
If OpenLibrary(0, "c:\dll\FreeImage.dll")
Else
Debug "Die Bibliothek FreeImage konnte nicht geöffnet werden!"
End
EndIf
Debug "Bibliothek durchsuchen:"
If ExamineLibraryFunctions(0)
Debug ""
Debug "Funtionsnamen:"
While NextLibraryFunction()
Debug LibraryFunctionName()
Wend
EndIf
Debug ""
Debug "Version: "+PeekS(CallFunction(0, "_FreeImage_GetVersion@0"))
Debug PeekS(CallFunction(0, "_FreeImage_GetCopyrightMessage@0"))
Debug CallFunction(0, "_FreeImage_Initialise@4", #False)
Debug PeekS(CallFunction(0, "_FreeImage_SetOutputMessage@4", @Sample_FreeImageErrorHandler()))
imgpath.s="c:\Bild.JGP"
;imgpath.s="Bild.JGP"
Debug imgpath
*pointer = AllocateMemory(Len(imgpath)+10)
PokeS(*pointer, imgpath, -1, #PB_Ascii)
Debug PeekS(*pointer)
fif = CallFunction(0, "_FreeImage_GetFileType@8", *pointer, 0)
;fif = FreeImage_GetFileType(imgpath, 0)
If fif = #FIF_UNKNOWN
Debug "FIF_UNKNOWN"
fif = CallFunction(0, "_FreeImage_GetFIFFromFilename@4", *pointer)
If fif = #FIF_UNKNOWN
Debug "FIF_UNKNOWN"
EndIf
EndIf
Debug CallFunction(0, "_FreeImage_FIFSupportsReading@4", fif)
Debug CallFunction(0, "_FreeImage_Load@12", fif, *pointer, 0)
Debug PeekS(CallFunction(0, "_FreeImage_SetOutputMessage@4", @Sample_FreeImageErrorHandler()))
FreeMemory(*pointer)
CloseLibrary(0)