1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. auitprogrammer51

Beiträge von auitprogrammer51

  • GDI+ Metadaten mit GetAllPropertyItems

    • auitprogrammer51
    • 21. Juli 2016 um 10:47

    Hallo Photon,

    ich habe dummerweise die globale Variable "$__g_hGDIPDll = 0" beim kopieren vergessen... Sie ist bei den Funktionen deklariert und zugewiesen:

    Code
    Global $__g_hGDIPDll = 0

    Der Variablentyp muss natürlich auch "struct*" heißen. Danke für die Korrekturen.

    Leider komm ich an diesem Punkt immer noch nicht weiter...
    Muss ich die Struktur noch entsprechend dimensionieren, damit das Programm nicht abschmiert? Bei einem Script für AutoHotkey habe ich etwas ähnliches gefunden (https://autohotkey.com/board/topic/85…llpropertyitems)

    Weiß jemand weiter?

  • GDI+ Metadaten mit GetAllPropertyItems

    • auitprogrammer51
    • 21. Juli 2016 um 09:08

    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!

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™