Diashow Bilder richtig anzeigen

  • Moin,

    ich wurde von einer Freundin gebeten im Internet mal zu gucken ob es ein Diashow Programm gibt, was einfach alle Bilder aus einem Ordner anzeigt. Hierbei sollte es aber so sein, dass wenn neue Bilder hinzu kommen, dass diese automatisch mit benutzt werden.

    Habe leider nichts im Internet gefunden und wollte daher eben was eigenes erstellen.
    Den Grundgedanken habe ich schon mal, einfach alle Bilder jedes mal einlesen und in einer Gui anzeigen lassen.

    Jetzt zur Frage.
    Bilder können Wagerecht und Senkrecht gemacht werden, sprich die Größen sind anders.
    Wie kann ich die Größe von einem Bild einlesen und es genau in der Mitte einer nicht definierbaren GUI (sprich habe keine feste Größe des Fensters) anzeigen zu lassen?

    MfG
    Freaky

  • Kann doch Windows selbst schon. Geh in den Ordner in dem die Bilder sind und machte auf ein Bild Rechtsklick -> Vorschau. Dann geht ein Fenster auf mit diesem einen Bild. In der unteren Menüleiste ist dann ein großer runter Button direkt in der Mitte. Einmal drauf geklickt und du hast die Diashow mit alle Bildern in diesem Ordner.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ja, das ist mir bewust.
    Aber hab mal 2 Monitore an, mach die Diashow auf einem an und auf dem zweiten Monitor pack mal mehr Bilder in den Ordner rein. Du wirst sehen, dass die Diashow die Bilder nicht mit einschliesst. Diese werden ignoriert.

  • Servus, um mal deine eigentliche Frage zu beantworten. Mithilfe den GDI+ Funktionen kannst du problemlos die Größe eines Bildes ermitteln. Die nötigen Funktionen dazu sind _GDIPlus_ImageGetHeight() und _GDIPlus_ImageGetWidth(). Ansonsten kannst du die Fenstergröße direkt (sobald diese geändert wird) mit der Windows Message $WM_SIZE auslesen. Oder mit der WinAPI Funktionen _WinAPI_GetWindowHeight() und _WinAPI_GetWindowWidth().

  • Dankeschön. Ich werde mich mit den Bildergrößen auseinander setzen.

    Zum Fenster ... ich werde das Fenster als Vollbild haben und möchte dann in dem Fenster das Bild genau zentriert in der Mitte anzeigen lassen.
    Ich könnte jetzt natürlich max. Länge vom Fenster durch 2 teilen minus max. Länge vom Bild durch 2 teilen und so die Mitten bestimmen (natürlich das selbe noch mit der Höhe) aber geht das nicht vielleicht sogar etwas leichter?

    ps: Weiß jemand die Variable für Vollbild auswendig? :D

  • Wenn du die gesamte Desktopgröße nutzt reichen hier auch die Makros @DesktopHeight und @DesktopWidth aus.
    Die Bildposition musst du wohl oder übel berechnen, aber das wird ja kaum das Problem sein...

    [autoit]

    $xPos = @DesktopWidth / 2 - _GDIPlus_ImageGetWidth($handle) / 2
    $yPos = @DesktopHeight / 2 - _GDIPlus_ImageGetHeight($handle) / 2

    [/autoit]
  • ô.ö

    Da gibt's keine "Variable" für. Du erstellst das Fenster direkt in der Desktopgröße oder veränderst diese später dementsprechend. Vielleicht meinst du auch einfach nur den $WS_POPUP Style, mehr kann ich dir nicht helfen. :/

  • Genau, habe an $WS_POPUP gedacht :D (ist ja ne Variable :P, ja ich weiß, dass es ein Style ist :D)

    @alpines
    Das würde ich eh anstatt der WinAPI Befehle benutzen :)
    Dankeschön :)

    Öhm mir kam gerade noch ein Gedanke.
    Ist es möglich, wenn ich gerade die Bilder tausche, dass eins verblasst und eins so auftaucht? Also dass es nicht so abrubt auftaucht.

  • Danke schaue ich mir gleich an :)

    Ich habe aber gerade ein anderes Problem was ich mit meinem logischen Denken nicht hinbekomme :D
    Mein Bild hat die Größe 3264 x 4928 Pixel. Mein Desktop jedoch nur 1440 x 900 Pixel.
    Wie bekomme ich jetzt das Bild auf diese Größe, sodass es nicht "verkrüppelt" ist am Ende?
    Das sollte aber auch mit Bildern funktionieren wo die Größe umgekehrt ist, also 4928 x 3264

  • Naja, dass ist ein Hauptproblem welches in jedem Grafikprogramm steckt. Da gibt's ehrlich gesagt keine "gute" oder "richtige" Lösung. Aber die GDI+ Engine regelt dass schon ganz gut selber. Da brauchst du dich nicht großartig drum scheren. Schau dir mal das Beispiel hier an:

    Spoiler anzeigen
    [autoit]

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

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

    Global $g_hGUI, $g_hGraphics, $g_hBmp_Buffer, $g_hGfx_Buffer, $g_hImage
    Global $g_iMouseX, $g_iMouseY

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

    Example()

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

    Func Example()
    AutoItSetOption("GUIOnEventMode", 1)

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

    ; X64 running support
    Local $sWow64 = ""
    If @AutoItX64 Then $sWow64 = "\Wow6432Node"

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

    ;get AutoIt install dir
    Local $sRegPath = "HKLM\SOFTWARE" & $sWow64 & "\AutoIt v3\AutoIt"

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

    Local $sFile = RegRead($sRegPath, "InstallDir") & "\Examples\GUI\logo4.gif"
    If Not FileExists($sFile) Then
    MsgBox(BitOR($MB_SYSTEMMODAL, $MB_ICONHAND), "", $sFile & " not found!", 30)
    Exit
    EndIf

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

    $g_hGUI = GUICreate("GDI+", 800, 600)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "_ResetGraphicsTransform")
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()
    $g_hGraphics = _GDIPlus_GraphicsCreateFromHWND($g_hGUI)
    $g_hBmp_Buffer = _GDIPlus_BitmapCreateFromGraphics(800, 600, $g_hGraphics)
    $g_hGfx_Buffer = _GDIPlus_ImageGetGraphicsContext($g_hBmp_Buffer)

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

    $g_hImage = _GDIPlus_ImageLoadFromFile($sFile)

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

    GUIRegisterMsg($WM_LBUTTONDOWN, "WM_LBUTTONDOWN")
    GUIRegisterMsg($WM_MOUSEWHEEL, "WM_MOUSEWHEEL")
    GUIRegisterMsg($WM_MOUSEMOVE, "WM_MOUSEMOVE")
    GUISetState(@SW_SHOW)

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

    _Draw()

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

    While Sleep(10)
    WEnd
    EndFunc ;==>Example

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

    Func _ResetGraphicsTransform()
    _GDIPlus_GraphicsResetTransform($g_hGfx_Buffer)
    _Draw()
    EndFunc ;==>_ResetGraphicsTransform

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

    Func WM_LBUTTONDOWN($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam

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

    $g_iMouseX = BitAND($lParam, 0x0000FFFF)
    $g_iMouseY = BitShift($lParam, 16)
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_LBUTTONDOWN

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

    Func WM_MOUSEMOVE($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg

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

    Switch BitAND($wParam, 0x0000FFFF)
    Case 1
    Local $iX = BitAND($lParam, 0x0000FFFF)
    Local $iY = BitShift($lParam, 16)

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

    _GDIPlus_GraphicsTranslateTransform($g_hGfx_Buffer, $iX - $g_iMouseX, $iY - $g_iMouseY, True)

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

    $g_iMouseX = $iX
    $g_iMouseY = $iY

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

    _Draw()
    EndSwitch

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

    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_MOUSEMOVE

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

    Func WM_MOUSEWHEEL($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $lParam

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

    Switch BitAND($wParam, 0x0000FFFF)
    Case 1
    Local $iAngle = -3
    If BitShift($wParam, 16) < 0 Then $iAngle = 3

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

    Local $aMousePos[2][2] = [[1]]
    $aMousePos[1][0] = $g_iMouseX
    $aMousePos[1][1] = $g_iMouseY
    _GDIPlus_GraphicsTransformPoints($g_hGfx_Buffer, $aMousePos)

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

    _GDIPlus_GraphicsTranslateTransform($g_hGfx_Buffer, $aMousePos[1][0], $aMousePos[1][1])
    _GDIPlus_GraphicsRotateTransform($g_hGfx_Buffer, $iAngle)
    _GDIPlus_GraphicsTranslateTransform($g_hGfx_Buffer, -$aMousePos[1][0], -$aMousePos[1][1])

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

    Case Else
    Local $aInfo = GUIGetCursorInfo($g_hGUI)
    Local $iScale = 1.1
    If BitShift($wParam, 16) < 0 Then $iScale = 0.9

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

    _GDIPlus_GraphicsTranslateTransform($g_hGfx_Buffer, -$aInfo[0], -$aInfo[1], True)
    _GDIPlus_GraphicsScaleTransform($g_hGfx_Buffer, $iScale, $iScale, True)
    _GDIPlus_GraphicsTranslateTransform($g_hGfx_Buffer, $aInfo[0], $aInfo[1], True)
    EndSwitch

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

    _Draw()
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_MOUSEWHEEL

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

    Func _Draw()
    _GDIPlus_GraphicsClear($g_hGfx_Buffer, 0xFFFFFFFF)

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

    _GDIPlus_GraphicsDrawImage($g_hGfx_Buffer, $g_hImage, 316, 266)

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

    Local $hPen = _GDIPlus_PenCreate(0xFF0000FF)
    _GDIPlus_GraphicsDrawRect($g_hGfx_Buffer, 300, 250, 200, 100, $hPen)
    _GDIPlus_PenDispose($hPen)

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

    Local $hBrush = _GDIPlus_BrushCreateSolid(0xFF00007F)
    Local $hFormat = _GDIPlus_StringFormatCreate()
    _GDIPlus_StringFormatSetAlign($hFormat, 1)
    Local $hFamily = _GDIPlus_FontFamilyCreate("Arial")
    Local $hFont = _GDIPlus_FontCreate($hFamily, 24, 2)
    Local $tLayout = _GDIPlus_RectFCreate(0, 360, 800)
    _GDIPlus_GraphicsDrawStringEx($g_hGfx_Buffer, "AutoIt rulez!", $hFont, $tLayout, $hFormat, $hBrush)

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

    _GDIPlus_GraphicsDrawImage($g_hGraphics, $g_hBmp_Buffer, 0, 0)

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

    _GDIPlus_FontDispose($hFont)
    $hFont = _GDIPlus_FontCreate($hFamily, 10)
    _GDIPlus_StringFormatSetAlign($hFormat, 0)

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

    DllStructSetData($tLayout, "X", 10)
    DllStructSetData($tLayout, "Y", 10)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, "left mousebutton = move graphic", $hFont, $tLayout, $hFormat, $hBrush)

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

    DllStructSetData($tLayout, "Y", 30)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, "mousewheel = zoom graphic", $hFont, $tLayout, $hFormat, $hBrush)

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

    DllStructSetData($tLayout, "Y", 50)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, "mousewheel + left mousebutton = rotate graphic", $hFont, $tLayout, $hFormat, $hBrush)

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

    DllStructSetData($tLayout, "Y", 70)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, "right mousebutton = reset", $hFont, $tLayout, $hFormat, $hBrush)

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

    Local $hMatrix = _GDIPlus_MatrixCreate()
    _GDIPlus_GraphicsGetTransform($g_hGfx_Buffer, $hMatrix)
    Local $aMatrix_Values = _GDIPlus_MatrixGetElements($hMatrix)
    _GDIPlus_MatrixDispose($hMatrix)

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

    DllStructSetData($tLayout, "Y", 110)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, "Matrix:", $hFont, $tLayout, $hFormat, $hBrush)
    DllStructSetData($tLayout, "X", 20)
    DllStructSetData($tLayout, "Y", 130)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, StringFormat("%.2f %.2f", $aMatrix_Values[0], $aMatrix_Values[1]), $hFont, $tLayout, $hFormat, $hBrush)
    DllStructSetData($tLayout, "Y", 150)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, StringFormat("%.2f %.2f", $aMatrix_Values[2], $aMatrix_Values[3]), $hFont, $tLayout, $hFormat, $hBrush)
    DllStructSetData($tLayout, "Y", 170)
    _GDIPlus_GraphicsDrawStringEx($g_hGraphics, StringFormat("%.2f %.2f", $aMatrix_Values[4], $aMatrix_Values[5]), $hFont, $tLayout, $hFormat, $hBrush)

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

    _GDIPlus_FontDispose($hFont)
    _GDIPlus_FontFamilyDispose($hFamily)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)
    EndFunc ;==>_Draw

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

    Func _Exit()
    _GDIPlus_ImageDispose($g_hImage)
    _GDIPlus_GraphicsDispose($g_hGfx_Buffer)
    _GDIPlus_BitmapDispose($g_hBmp_Buffer)
    _GDIPlus_GraphicsDispose($g_hGraphics)
    _GDIPlus_Shutdown()
    GUIDelete($g_hGUI)
    Exit
    EndFunc ;==>_Exit

    [/autoit]


    Findest du in Beispielecodes der Helpfile in der Datei _GDIPlus_GraphicsTransformPoints.au3
    Am besten sind immernoch die Vergrößerungen bzw. Verkleinerungen mit einem Faktor von 2^x. Also: 0.125, 0.25, 0.5, 1, 2, 4, 8, 16 usw...

  • Ich dachte jetzt eher an etwas Simples :D

    Ich habe das mal mit dem Taschenrechner versucht nachzubauen und kam auf folgendes:
    Man guckt sich die Breite & Länge des Bildes an, wenn eins davon größer ist als die Breite bzw. Länge vom Bildschirm, dann wird die Breite bzw. Länge des Bildschirmes durch die Breite bzw. Länge des Bildes geteilt. Dieser Faktor wird dann bei der anderen Seite angewendet und schon hat man das Bild in der Größe der Breite bzw. Länge des Bildschirmes und dann den Rest.

    Leider wird bei mir hiermit nichts angezeigt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    Global $sImageDir = "./images", $iTimerChange = 10000, $iTimer = 9999999000

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

    $Form1 = GUICreate("Form1", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUISetBkColor(0x000000)
    $Pic1 = GUICtrlCreatePic("", 0, 0, @DesktopWidth, @DesktopHeight)
    GUISetState(@SW_SHOW)

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

    While 1
    SetImage()
    Buttons()
    WEnd

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

    Func SetImage()
    if FileExists ($sImageDir) Then
    $aImages = _FileListToArray ($sImageDir, "*.jpg");
    if (UBound($aImages) > 0) Then
    For $i = 1 To UBound ($aImages)-1
    While 1
    Buttons()
    If (TimerDiff($iTimer) >= $iTimerChange) Then
    $hImage = _GDIPlus_ImageLoadFromFile($sImageDir & "/" & $aImages[$i])
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)

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

    if ($iX > $iY And $iX > @DesktopWidth) Then
    $iCalc = $iX / @DesktopWidth
    ;~ MsgBox (0,"",@DesktopHeight / 2 - $iY / $iCalc / 2)
    GUICtrlSetPos ($Pic1, @DesktopWidth, @DesktopHeight / 2 - $iY / $iCalc / 2, @DesktopWidth, $iY)
    ElseIf ($iY > $iX And $iY > @DesktopHeight) Then
    $iCalc = $iY / @DesktopHeight
    ;~ MsgBox (0,"",@DesktopWidth / 2 - $iX / $iCalc / 2 & " x " & @DesktopHeight)
    GUICtrlSetPos ($Pic1, @DesktopWidth / 2 - $iX / $iCalc / 2, @DesktopHeight, $iX / $iCalc, @DesktopHeight)
    Else
    GUICtrlSetPos ($Pic1, @DesktopWidth / 2 - $iX / 2, @DesktopHeight / 2 - $iY / 2, $iX, $iY)
    EndIf

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

    GUICtrlSetImage ($Pic1, $sImageDir & "/" & $aImages[$i]);

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

    ExitLoop
    EndIf
    WEnd
    $iTimer = TimerInit()
    Next
    EndIf
    EndIf
    ;~ exit;
    EndFunc

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

    Func Buttons()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    EndFunc

    [/autoit]

    /Edit:
    Okay, es funktioniert doch :D
    Habe es etwas aufgeräumt. Komischerweise kann ich das Bild nach _GDIPlus_ImageLoadFromFile nicht mehr einbinden :(

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <Array.au3>
    #include <GDIPlus.au3>

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

    _GDIPlus_Startup()
    Global $sImageDir = "./images", $iTimerChange = 10000, $iTimer = 9999999000

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

    $Form1 = GUICreate("Form1", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
    GUISetBkColor(0x000000)
    $Pic1 = GUICtrlCreatePic("", 0, 0, @DesktopWidth, @DesktopHeight)
    GUISetState(@SW_SHOW)

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

    While 1
    SetImage()
    Buttons()
    WEnd

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

    Func SetImage()
    if FileExists ($sImageDir) Then
    $aImages = _FileListToArray ($sImageDir, "*.jpg");
    if (UBound($aImages) > 0) Then
    For $i = 1 To UBound ($aImages)-1
    While 1
    Buttons()
    If (TimerDiff($iTimer) >= $iTimerChange) Then
    GUICtrlSetImage ($Pic1, $sImageDir & "/" & $aImages[$i]);
    $hImage = _GDIPlus_ImageLoadFromFile($sImageDir & "/" & $aImages[$i])
    $iX = _GDIPlus_ImageGetWidth($hImage)
    $iY = _GDIPlus_ImageGetHeight($hImage)

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

    if ($iX > $iY And $iX > @DesktopWidth) Then
    $iCalc = $iX / @DesktopWidth
    $iX = @DesktopWidth
    $iY = $iY / $iCalc
    ElseIf ($iY > $iX And $iY > @DesktopHeight) Then
    $iCalc = $iY / @DesktopHeight
    $iX = $iX / $iCalc
    $iY = @DesktopHeight
    EndIf

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

    GUICtrlSetImage ($Pic1, $sImageDir & "/" & $aImages[$i]);
    GUICtrlSetPos ($Pic1, @DesktopWidth / 2 - $iX / 2, @DesktopHeight / 2 - $iY / 2, $iX, $iY)

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

    ExitLoop
    EndIf
    WEnd
    $iTimer = TimerInit()
    Next
    EndIf
    EndIf
    ;~ exit;
    EndFunc

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

    Func Buttons()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    EndFunc

    [/autoit]

    Wenn man das jetzt ausprobiert, merkt man schnell, dass die Bilder teilweise echt unscharf sind. Gibt es dafür eine Lösung?

    /Edit2:
    Neues Problem: Die Bilder die bereits 1x aufgerufen worden sind, können kein zweites mal angezeigt werden :(
    Ich vermute das liegt an _GDIPlus_ImageLoadFromFile, wie kann ich den die Verbindung trennen?

    /Edit3:
    Das Problem mit dem erneuten einlesen habe ich hiermit gelöst: _GDIPlus_ImageDispose($hImage)
    Ein anderes Problem ist, dass AutoIt extrem lange braucht um Bilder einzulesen. Dadurch wird vorherige Bild "zerstört", wenn die Größe anders ist und dies sieht man dann ca. 1-2 Sekunden.

    3 Mal editiert, zuletzt von Freaky (23. Januar 2015 um 17:28)

  • Gibt es von dem Script eine aktuellere Fassung?

    Bei mir ist es so, dass die 3 Bilder im Verzeichnis zuerst richtig angezeigt werden.

    Das letzte Bild wird in einer Dauerschleife angezeigt, seitenrichtig und verzerrt im Wechsel.

    Wo liegt der Fehler?

  • Das letzte Bild wird in einer Dauerschleife angezeigt, seitenrichtig und verzerrt im Wechsel.

    Wo liegt der Fehler?

    Das du die Fehlerberichtigungen von Freaky auch noch nachvollziehen musst:

    /Edit2:
    Neues Problem: Die Bilder die bereits 1x aufgerufen worden sind, können kein zweites mal angezeigt werden
    Ich vermute das liegt an _GDIPlus_ImageLoadFromFile, wie kann ich den die Verbindung trennen?

    /Edit3:
    Das Problem mit dem erneuten einlesen habe ich hiermit gelöst: _GDIPlus_ImageDispose($hImage)

    Hier ein leicht überarbeitetes Skript:

    Spoiler anzeigen