GDI+ Höhe und Breite ermitteln failt

  • Hallo,

    ich versuche gerade die Größe und die Breite eines Bildes, von dem der Pfad angegeben wurde, zu ermitteln, jedoch kommt dort nur eine komische Zahl bei raus und nicht die Richtige. Vor einiger Zeit habe ich es so hinbekommen, dass er die richtigen Maße ermittelt hat, aber dann gab es bei der If Schleife wieder Probleme, beim Maßechecken.

    Könnte mir mal jemand sagen, was ich falsch mache?

    Skript :

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GDIPlus.au3>
    _GDIPlus_Startup()
    $Form1 = GUICreate("Form1", 446, 73, 192, 124)
    $BildPfad = GUICtrlCreateLabel("BildPfad", 8, 8, 43, 17)
    $Input1 = GUICtrlCreateInput("", 56, 8, 377, 21)
    $uberprufen = GUICtrlCreateButton("uberprufen", 176, 40, 75, 25)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_Shutdown()
    Exit
    Case $uberprufen
    $hImage = GuiCtrlRead($Input1)
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)
    ConsoleWrite("Breite " & $iX & " Hohe " & $iY)
    If $iX = 166 And $iY = 44 Then
    MsgBox(64,"Bild richtig","Das Bild hat die richtigen Maße")
    Else
    MsgBox(64,"Bild falsch","Maße nicht eingehalten!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]
  • Du musst doch das Image erst mit GDI+ öffnen:

    [autoit]


    $hImage = _GDIPlus_ImageLoadFromFile(GUICtrlRead($Input1);

    [/autoit]

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Super Fehlerbschreibung.

    Also bei mir klappt es ohne Probleme. Da wir nihct wissen welches Bild du nimmst (Evtl ein Dateityp den GDI+ nicht auslesen kann), wie groß es ist etc können wir nur bedingt bis garnicht helfen. Ich bitte dich weitere Informationen beizulegen.

  • Hall Julien,

    ich habe es gerade so getestet:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Include <GDIPlus.au3>
    _GDIPlus_Startup()
    $Form1 = GUICreate("Form1", 446, 73, 192, 124)
    $BildPfad = GUICtrlCreateLabel("BildPfad", 8, 8, 43, 17)
    $Input1 = GUICtrlCreateInput("", 56, 8, 377, 21)
    $uberprufen = GUICtrlCreateButton("uberprufen", 176, 40, 75, 25)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_Shutdown()
    Exit
    Case $uberprufen
    $sImage = GuiCtrlRead($Input1)
    $hImage = _GDIPlus_ImageLoadFromFile($sImage)
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)
    _GDIPlus_ImageDispose($hImage)
    ConsoleWrite("Breite " & $iX & " Hohe " & $iY)
    If $iX = 166 And $iY = 44 Then
    MsgBox(64,"Bild richtig","Das Bild hat die richtigen Maße")
    Else
    MsgBox(64,"Bild falsch","Maße nicht eingehalten!")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Die ermittelten Masse die in der Scite-Konsole angezeigt werden stimmen bei mir, kann es sein dass du einen Tippfehler in deiner If-Abfrage hast und anstelle von 166 116 schreiben wolltest, dies sind zumindest die Masse der Bilder, die ich aus dem PatchUp-Projekt von dir habe,

    mfg autoBert