Liebe Community,
ich möchte gerne von einem Bild Metadaten abfragen. Ich will dafür die GDI+-Funktion "GetAllPropertyItems" benutzen und habe folgende Funktionen erstellt:
AutoIt
#include "GDIPlusConstants.au3"
#include "StructureConstants.au3"
#include "WinAPI.au3"
#include "WinAPIGdi.au3"
Func _GDIPlus_GdipGetPropertySize($hImage)
Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetPropertySize", "handle", $hImage, "uint*", 0, "uint*", 0)
If @error Then Return SetError(@error, @extended, 0)
If $aResult[0] Then Return SetError(10, $aResult[0], 0)
Local $varoutput[2] = [$aResult[2], $aResult[3]]
Return $varoutput
EndFunc ;==>_GDIPlus_GdipGetPropertySize
Func _GDIPlus_GdipGetAllPropertyItems($hImage, $totalBufferSize, $numProperties)
Local $str = "uint id;uint length;short type;uint value"
Local $tStruct = DllStructCreate($str)
Local $aResult = DllCall($__g_hGDIPDll, "int", "GdipGetAllPropertyItems", "handle", $hImage, "uint", $totalBufferSize, "uint", $numProperties, "struc*", DllStructGetPtr($tStruct))
If @error Then Return SetError(@error, @extended, 0)
If $aResult[0] Then Return SetError(10, $aResult[0], 0)
Return $aResult[4]
EndFunc ;==>_GDIPlus_GdipGetAllPropertyItems
Alles anzeigen
Diese Funktionen rufe ich folgendermaßen auf:
AutoIt
#include <GDIPlus.au3>
#include <MsgBoxConstants.au3>
#include "...\MeineFunktionen.au3"
Opt('MustDeclareVars', 1)
Global $Dateiname1, $AllPropertyOutput, $PI
Global $lngBitmap1, $lGraph
Dim $test
$DateiName1 = "xyz.JPG"
_GDIPlus_Startup ()
$lngBitmap1 = _GDIPlus_ImageLoadFromFile($DateiName1)
$AllPropertyOutput = _GDIPlus_GdipGetPropertySize($lngBitmap1)
$PI = _GDIPlus_GdipGetAllPropertyItems($lngBitmap1, $AllPropertyOutput[0], $AllPropertyOutput[1])
_GDIPlus_BitmapDispose($lngBitmap1)
_GDIPlus_Shutdown ()
Exit
Alles anzeigen
Leider funktioniert die zweite Funktion (_GDIPlus_GdipGetAllPropertyItems) nicht. Es werden nicht die gewünschten Daten übergeben. Kann mir jemand sagen woran das hängt?
Vielen Dank für eure Tipps!