Grafiken direkt in den Code einbinden

  • Diese Methode bietet sich eher für kleine Grafiken an. Die Performance ist nicht riesig da das Explorer Objekt verwendet wird.
    Außerdem kann es sein, daß bei älteren Internet-Explorer Versionen bis IE7 die Sache fehlschlägt. Ab IE8 (WinXP) sollte es aber klappen.

    Die Grafik muß erst in eine data-url umgewandelt werden. Das Dateiformat ist dabei beliebig solange es kompatibel zum IE ist.

    [autoit]

    ;Grafiken in Code als dataURL einbinden
    ;kann bei aelteren IE-Versionen (<8) fehlschlagen
    GUICreate("DataUrl Test", 250, 250, -1, -1)

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

    $dataurl='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA'& _
    'AFgAAAAfCAMAAABUFvrSAAAAB3RJTUUH2wkdBjAIzl5pDAAAAAlwSFlzAAALEgAACxIB0t1+/AAAAARnQU1BAACxjwv8Y'& _
    'QUAAABaUExURQgICAAAADk5OZKSkL3Gvc7Ozv///zExMa21rdnZ17W1rW9va0JCQhAQEHl5d5yamhgYGGFcX4iEiLm7t1'& _
    'JSUu/v78bIw87KxiUhISkpKaeqp+vn5/f39zEpKT5nDSUAAAKwSURBVHjatZaLsqIwDIaNpYEiLdCKFNT3f81N2lIu465'& _
    'ndE9GB/0lH+mfXjxp+J04ATjniuJ2u40yxUhfioJkV9fVZ8HgxGWiCsGfMvlDcBXAXC5RbRNs0Y1VoeqVbCb+YTJr3luF'& _
    'wUVwQXSrP52IRUczBKU0xjSUJmLWDxQCkw+jVFeutbfO2Z7rvtIQohv1rOGqkILu0SGr/YHCYPKBudoOGINug+lGbjC5n'& _
    'qAnDYB/gImToiL6g3Ifx3tWCMz+ErdUmGMoqeZkhom1BDBegTw0ULbE7bS5Z4XumT2FS0oAk7/EHRD3ZBHNmGDzRMXlTD'& _
    'D58wWshTkrCkd/7o33IioRrDrQEncxaOhUKBka/t5DGD42QDnUJSrO3NWq4KP1lnzwz6gweJQWwOIhWtLYZQcGgxPRC8M'& _
    'YUkZDglGr8vB+Ipu9vweFwVI2oMkId20aGy+CEjQ0wYvXYGKYp/e9y0o9uSNYaR6mCzO4qcKl58FrFcAvrKAPjxYVd+u8'& _
    'KG4mN6mBqxVSUaMQS/DK+bak6VH5NngRTE7NiwXnVmHvn08ws+kWpfXe2okyc/MY7DjTRkCy2yUwTaUVvEwuGrTttHhsF'& _
    'csDuDzW6fYG7DYLxGwXiO0PipxnlZWdFYP0lqzgy2qF+3hJp+alruXmmdQ852baYMrelOuW075XwnSjp2CeblUTLujjdA'& _
    's752fb5sgrWvx1gXy42eclrfbcdUl/A5btPzahD08nPkyNlLSwys02pOK2ab88peGy3+gHq3l7lubb459rVv3haFLc0hR'& _
    'xfUB8RyW+EeFwE+7B7EZ7OEzFJie9cENJ33eP2gkRTG5IJZbjX9Dxv/Vh2Ta3j8Ldg5ZnIR7BUFbbPyz1eZdzMGKxAXfa'& _
    'YQinrJ9FEf9hFWKHfV3x0eOlDy/A/zlOv0X+AwPDS4lNwGlRAAAAAElFTkSuQmCC'

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

    $oShell = ObjCreate("Shell.Explorer.2")
    If IsObj($oShell) Then
    $oShell_ctrl = GUICtrlCreateObj($oShell, 50, 50, 88, 31)
    $oShell.navigate("about:blank")
    $oShell.document.write('<body style="border:0;margin:0" scroll="no"><image src="' & $dataurl & '"/></body>')
    EndIf

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

    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case -3
    $oShell=0 ;Objekt loeschen
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von AutoFlip (30. September 2011 um 08:05)

  • Werden da auch Bilder aus dem AU3 Quellcode selbst eingebunden?

    Ich dachte die von Dir verlinkte Methode klappt nur, wenn man aus dem AU3 ein EXE macht und die Grafik dort als Ressource einbindet?
    Was ja auch für viele Zwecke sinnvoll ist.

  • Stimmt Protex,
    das Ergebnis ist auch hübsch simpel im Ergebnis. Ich wollte eine Lösung ohne aufwendigen Code und UDFs. Das macht die Lösung von BugFix auch und wahrscheinlich "performanter".

  • @Protex: Da wird auch eine temporäre Datei erstellt. Wenn man den IE nicht verwenden will, bleibt für direktes Einbinden der Grafiken noch OLE mit GDI+ Dazu muss ähnlich wie bei BugFix auch der Binärstring ins Skript eingebunden, jedoch keine temporäre Datei erstellt werden