Autoit Konvertiert nicht?!?

  • Hallo,

    ich hab hier ein script, in dem autoit ein .png bild aus dem inet downloaded. Das tut es auch. Danach soll Autoit dieses .png bild in ein .jpg bild konvertieren (mit der janGraphics.dll, hab ich ausm inet). Jedoch tut Autoit dies nicht, bzw vllt. tut es dies doch, jeoch erstellt es nicht dieses "Zielbild.jpg"

    Dadurch kann das script nicht weiterlaufen und das bild in das Gui eingefügt werden.

    Hier das script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <All.au3>

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

    ;//prüfen ob bild exisitiert, wenn nicht dann runterladen
    If Not FileExists(@ScriptDir & "\Bild.png") Then InetGet("http://ard.gedif.de/ard/46/chart.gfx?width=380&height=250&average=38&average=200&overTime=0&split=0&gridGlobalOff=0&highLow=1&fill=0&chartType=0&time=0&symbol=543900&exchangeId=1&countryId=276", @ScriptDir & "\Bild.png",1,0)
    ;//warten bis datei erstellt ist
    Do
    Sleep(10)
    Until FileExists("Bild.png")

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

    $dll=DllOpen(@ScriptDir & "\janGraphics.dll")
    If Not FileExists(@ScriptDir & "\Zielbild.jpg") then DllCall($dll, "str", "Conv", "str", @ScriptDir & "\Bild.png", "str", @ScriptDir & "\Zielbild.jpg")

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

    Do
    Sleep(10)
    Until FileExists("Zielbild.jpg")

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

    ;//gui mit bild erstellen
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 621, 445, 193, 125)
    $Pic1 = GUICtrlCreatePic(@ScriptDir & "\Zielbild.jpg", 0, 0, 620, 444, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Ich hoffe mir kann jemand helfen.
    mfg Dtex

  • Hallo dtex,

    hier eine Lösung bei der du ohne konvertieren auskommst:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    Global $gui, $pic1

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

    Dim $bilder = "http://ard.gedif.de/ard/46/chart.gfx?width=380&height=250&average=38&average=200&overTime=0&split=0&gridGlobalOff=0&highLow=1&fill=0&chartType=0&time=10000&symbol=543900&exchangeId=2&countryId=276"
    Dim $Savebild1 = @TempDir & "\banner2.gif"
    InetGet($bilder, $Savebild1, 1)
    ;----- Beispiel 3 wie das ganze auf mit PNG funktioniert (von Zedna) geht auch für Gif

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

    Global $hGUI, $hImage, $hGraphic, $hImage1

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

    ; GUI erstellen
    $hGUI = GUICreate("PNG zeigen", 250, 250)

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

    ; GIF Bild laden
    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\banner2.gif")
    $iWidth = _GDIPlus_ImageGetWidth($hImage)
    $iHeight = _GDIPlus_ImageGetHeight($hImage)
    $aWinPos = WinGetPos($hGUI)
    $aClient = WinGetClientSize($hGUI)
    WinMove($hGUI,"",$aWinPos[0],$aWinPos[1],$iWidth+$aWinPos[2]-$aClient[0],$iHeight+$aWinPos[3]-$aClient[1])
    $aClient = WinGetClientSize($hGUI)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()

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

    ; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    ; Ressourcen aufräumen
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()

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

    ; PNG Bild zeichnen
    Func MY_WM_PAINT($hWnd, $msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_PAINT

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

    diese habe ich dir aber bereits

    Zitat von ShoutBox

    25740 AutoBert : Dtex, http://autoit.pastebin.com/2Lx56EKm Heute, 04:02

    und

    Zitat

    26087 AutoBert : Dtex, http://autoit.pastebin.com/2Lx56EKm , weis nicht ob du das schon gelesen hast Heute, 14:13

    in die Shoutbox gestellt.

    Wenn dir jemand bei deinem neuen Lösungsweg helfen soll, solltest du wenigsten den Link zu janGraphics.dll einstellen,

    Edit: Hier eine Lösung mit konvertieren aber ohne janGraphics.dll :

    Spoiler anzeigen
    [autoit]

    ; *** Start added by AutoIt3Wrapper ***
    #include <StaticConstants.au3>
    ; *** End added by AutoIt3Wrapper ***
    #region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Add_Constants=n
    #endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

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

    Global $gui, $pic1

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

    If Not FileExists(@TempDir & "\banner2.gif") Then
    Dim $bilder = "http://ard.gedif.de/ard/46/chart.gfx?width=380&height=250&average=38&average=200&overTime=0&split=0&gridGlobalOff=0&highLow=1&fill=0&chartType=0&time=10000&symbol=543900&exchangeId=2&countryId=276"
    Dim $Savebild1 = @TempDir & "\banner2.gif"
    InetGet($bilder, $Savebild1, 1)

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

    Global $hImage, $hImage1

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

    ; GIF Bild laden
    _GDIPlus_Startup()
    $hImage = _GDIPlus_ImageLoadFromFile(@TempDir & "\banner2.gif")
    ; JPG Bild speichern
    _GDIPlus_ImageSaveToFile($hImage, @TempDir & "\banner2.jpg")

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

    ; Ressourcen aufräumen
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_Shutdown()
    EndIf
    $Form1 = GUICreate("Form1", 621, 445, 193, 125)
    $pic1 = GUICtrlCreatePic(@ScriptDir & "\banner2.jpg", 0, 0, 620, 444, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (12. August 2010 um 16:05)

  • Ja vielen dank zu deinem vorschlag, aber wie auch schon gesagt, möchte ich erstmal eine lösung ohne GDI+ finden. Mein programm ist ja an sich auch richtig, nur iwo ist anscheinend noch ein kleiner fehler-.-