Mehrzeiliges Panoramabild erstellen

  • Hi zusammen.

    Es geht um folgendes.
    Im Netz gibt es eine große Übersichtskarte für ein Onlinespiel.
    Die Karte besteht auf der höchsten Zoomstufe aus mehreren tausend einzelbildern.

    Nun müssen jedes mal wenn ich mich in der Karte bewege die Bilder neu geladen werden, warum auch immer...

    Deshalb wollte ich alle Bilder mit autoit runterladen, was dank der gut georneten Links auch wunderbar geklappt hat.
    Das Problem ist aber jetzt: Ich finde nach 2 Stunden google befragen kein Programm dass es auch nur ansatzweise so hinbekommt
    die Bilder in reihe und Spalte so anzuordnen und zu einem mehrzeiligen panorama zu machen wie ich es haben will.

    Deshalb wollt ich mal fragen ob das auch mit AutoIt umsetzbar ist?

    Die Bilder sind derzeit so gespeichert:
    img0_0.jpg, img0_1.jpg, img0_2.jpg, img0_3.jpg...
    img1_0.jpg, img1_1.jpg, img1_2.jpg, img1_3.jpg...
    img2_0.jpg, img2_1.jpg, img2_2.jpg, img2_3.jpg...
    u.s.w.

    Die erste Zahl gibt die Position horrizontal an, die zweite zahl gibt die Position vertikal an.
    img0_1.jpg liegt also unter img0_0.jpg u.s.w.

    Wäre super wenn man machbar wäre.
    Bin für jeden Tipp dankbar :)

  • Hallo

    Ich habe eigentlich zu fast 100% das gleiche Problem.

    Ich habe 1927 Bilder mit einer Größe von je 258x258 Pixeln.


    Genauso wie beim ersten Post ist das eigentliche Gesamtbild folgendermaßen aufgebaut (horizontal 0-40; vertikal 0-46)

    0_0.jpg, 1_0.jpg, 2_0.jpg, ... 40_0.jpg
    0_1.jpg, 1_1.jpg, 2_1.jpg, ... 40_1.jpg
    0_2.jpg, 1_2.jpg, 2_2.jpg, ... 40_2.jpg
    0_3.jpg, 1_3.jpg, 2_3.jpg, ... 40_3.jpg
    u.s.w.
    ... , ... , ... , ... 40_46.jpg


    Die erste Zahl gibt die Position horrizontal an, die zweite zahl gibt die Position vertikal an.
    img0_1.jpg liegt also unter img0_0.jpg u.s.w.


    Ich habe selber schon probiert es irgendwie hinzubekommen aber es klappt nicht.

    Hier mein Code. (Testweise nur von 0-3 in der Horizontalen und Vertikalen)
    Die Datei "Karte Gesamt.jpg" ist eine blanke Datei mit den Gesamtabmaßen(10578x12126 Pixel).

    Spoiler anzeigen
    [autoit]

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

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

    _Main()

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

    Func _Main()
    Local $hBitmap1, $hBitmap2, $hImage1, $hImage2, $hGraphic

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

    ; Initialisiert (startet) Microsoft Windows GDI+
    _GDIPlus_Startup()

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

    $hBitmap1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Karte Gesamt.jpg")
    $hImage1 = _GDIPlus_ImageGetGraphicsContext($hBitmap1)

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

    For $x = 0 To 3 Step +1
    For $y = 0 To 3 Step +1
    $hBitmap2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "" & $x & "_" & $y & ".jpg")
    $hImage2 = _GDIPlus_ImageGetGraphicsContext($hBitmap2)

    $hGraphic = _GDIPlus_ImageGetGraphicsContext($hImage1)
    $save =_GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage1, $x*258, $y*258, 258, 258)
    _WinAPI_DeleteObject($hBitmap2)
    Next
    Next
    ; Speichert das neue Bild
    _GDIPlus_ImageSaveToFile($hImage1, @ScriptDir & "\Karte Gesamt1.jpg")

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

    ; Ressourcen freigeben
    _GDIPlus_ImageDispose($hImage1)
    _WinAPI_DeleteObject($hBitmap1)

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

    ; Gibt die durch Microsoft Windows GDI+ verwendeten Ressourcen wieder frei
    _GDIPlus_Shutdown()

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

    EndFunc ;==>_Main

    [/autoit]
  • Bin jetzt zwar kein GDI+ Profi aber probiers mal so:

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <WinAPI.au3>
    Local $hBitmap1, $hBitmap2, $hContext

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

    ; Initialisiert (startet) Microsoft Windows GDI+
    _GDIPlus_Startup()

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

    $hBitmap1 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Karte Gesamt.jpg")
    $hContext = _GDIPlus_ImageGetGraphicsContext($hBitmap1)

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

    For $x = 0 To 3 Step +1
    For $y = 0 To 3 Step +1
    $hBitmap2 = _GDIPlus_ImageLoadFromFile(@ScriptDir & "" & $x & "_" & $y & ".jpg")
    _GDIPlus_GraphicsDrawImageRect($hContext, $hBitmap2, $x*258, $y*258, 258, 258)
    _WinAPI_DeleteObject($hBitmap2)
    Next
    Next
    ; Speichert das neue Bild
    _GDIPlus_ImageSaveToFile($hBitmap1, @ScriptDir & "\Karte Gesamt1.jpg")

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

    ; Ressourcen freigeben
    _GDIPlus_GraphicsDispose($hContext)
    _WinAPI_DeleteObject($hBitmap1)

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

    ; Gibt die durch Microsoft Windows GDI+ verwendeten Ressourcen wieder frei
    _GDIPlus_Shutdown()

    [/autoit]