Suche Script um zwei Bilder nebeneinander zusammmenfügen.

  • Hallo, ich suche schon die ganze Zeit im Netz nach einer Möglichkeit Bilder nebeneinander zusammenzufügen.

    Habe in einem Ordner 2 Bilder die ich dann zu einem zusammenfügen möchte.
    Also A.jpg neben B.jpg.

    B + A -> BA

    Ich weiss angeblich geht das mit gdiplus.
    Gibt es Beispiele oder eventuell Lösungen zu meinen Problem.

    Vielen Dank

  • Hi,
    nach ziemlich genau 4 Jahren Forenzugehörigkeit sollte man annehmen, dass du die Suche/Google benutzen kannst....

    Code
    bilder nebeneinander site:www.autoit.de


    in google einzutippern sollte machbar sein

    In den ersten beiden Links findes du komplette Scripte, u.a. das hier

  • Nimm dir bitte Andys Beitrag zu Herzen, und such das nächste mal bevor du die Frage stellst... Nichtsdestotrotz hatte ich tatsächlich noch ein Script, dass genau das macht (nur hatte ich noch Abstände zwischen den Bildern). Nach dem Entfernen des überflüssigen Codes ist das hier herausgekommen. Sollte genau das machen was du wolltest.

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>

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

    Global $iPictures = 2

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

    Global $aPic[$iPictures][3], $iTotalWidth = 0, $iTotalHeight = 0, $hBitmap, $hGraphics, $iX = 0, $sPath_Save

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

    OnAutoItExitRegister("_Shutdown")

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

    _GDIPlus_Startup()
    For $i = 0 To $iPictures -1
    $aPic[$i][0] = _GDIPlus_ImageLoadFromFile(FileOpenDialog("Select Image Nr. " & $i + 1, "", "Image File (*.jpg;*.jpeg;*.png;*.bmp;*.gif)"))
    If @error Then Exit
    $aPic[$i][1] = _GDIPlus_ImageGetWidth($aPic[$i][0])
    $aPic[$i][2] = _GDIPlus_ImageGetHeight($aPic[$i][0])
    $iTotalWidth += $aPic[$i][1]
    If $aPic[$i][2] > $iTotalHeight Then $iTotalHeight = $aPic[$i][2]
    Next

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

    $sPath_Save = FileSaveDialog("Save as...", "", "Image File (*.jpg;*.jpeg;*.png;*.bmp;*.gif)")
    If @error Then Exit

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

    $hBitmap = _GDIPlus_BitmapCreateFromscan0($iTotalWidth, $iTotalHeight)
    $hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)

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

    For $i = 0 To $iPictures - 1
    ConsoleWrite(_GDIPlus_GraphicsDrawImageRect($hGraphics, $aPic[$i][0], $iX, Floor($iTotalHeight / 2 - $aPic[$i][2] / 2), $aPic[$i][1], $aPic[$i][2]))
    $iX += $aPic[$i][1]
    Next

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

    _GDIPlus_ImageSaveToFile($hBitmap, $sPath_Save)

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

    Exit

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

    Func _GDIPlus_BitmapCreateFromScan0($iWidth, $iHeight, $iStride = 0, $iPixelFormat = 0x0026200A, $pScan0 = 0)
    Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iWidth, "int", $iHeight, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "int*", 0)

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

    If @error Then Return SetError(@error, @extended, 0)
    $GDIP_STATUS = $aResult[0]
    Return $aResult[6]
    EndFunc ;==>_GDIPlus_BitmapCreateFromScan0

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

    Func _Shutdown()
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_BitmapDispose($hBitmap)
    For $i = 0 To $iPictures - 1
    _GDIPlus_ImageDispose($aPic[$i][0])
    Next
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]
  • Danke für den Tipp @Andy mit site: den kannte ich noch nicht bei der google suche.

    Hab mir Basierend von @SEuBo Script ein funktionierend Script gebastelt.
    Vielen Dank nochmal.

    Jetzt funktionierts.

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    Opt("MustDeclareVars", 1)

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

    _CombinePictures(@DesktopDir & '\B.jpg', @DesktopDir & '\A.jpg', @DesktopDir & '\BA.jpg')
    ShellExecute(@DesktopDir & '\BA.jpg')

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

    Func _CombinePictures($pic1, $pic2, $new_picture)
    _GDIPlus_Startup()
    Local $hBitmap_pic1 = _GDIPlus_BitmapCreateFromFile($pic1)
    Local $hBitmap_pic2 = _GDIPlus_BitmapCreateFromFile($pic2)

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

    Local $height_pic1 = _GDIPlus_ImageGetHeight($hBitmap_pic1)
    Local $height_pic2 = _GDIPlus_ImageGetHeight($hBitmap_pic2)

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

    Local $width_pic1 = _GDIPlus_ImageGetWidth($hBitmap_pic1)
    Local $width_pic2 = _GDIPlus_ImageGetWidth($hBitmap_pic2)

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

    Local $pic1_and_pic2_width = $width_pic1 + $width_pic2
    Local $pic1_and_pic2_height = $height_pic1

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

    If $height_pic1 > $height_pic2 Then
    $pic1_and_pic2_height = $height_pic1
    ElseIf $height_pic2 > $height_pic1 Then
    $pic1_and_pic2_height = $height_pic2
    EndIf

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

    Local $hDesktop_DC = _WinAPI_GetDC(_WinAPI_GetDesktopWindow())
    Local $hWinHBITMAP = _WinAPI_CreateCompatibleBitmap($hDesktop_DC, $pic1_and_pic2_width, $pic1_and_pic2_height)
    Local $hBitmap_Erg = _GDIPlus_BitmapCreateFromHBITMAP($hWinHBITMAP)

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

    Local $hGraphic = _GDIPlus_ImageGetGraphicsContext($hBitmap_Erg)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap_pic1, 0, 0, $width_pic1, $height_pic1)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap_pic2, $width_pic1, 0, $width_pic2, $height_pic2)
    _GDIPlus_ImageSaveToFile($hBitmap_Erg, $new_picture)

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

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap_pic1)
    _GDIPlus_BitmapDispose($hBitmap_pic2)
    _GDIPlus_BitmapDispose($hBitmap_Erg)
    _WinAPI_DeleteObject($hWinHBITMAP)
    _WinAPI_ReleaseDC(_WinAPI_GetDesktopWindow(), $hDesktop_DC)
    _GDIPlus_Shutdown()
    EndFunc ;==>_CombinePictures

    [/autoit]

    ----------------------------------------------------------------------------------------------------------------------
    Früher musste man Drachen töten und konnte die Jungfrau heiraten.
    Heute gibt es keine Jungfrauen mehr, man muss den Drachen heiraten!

  • Danke


    name22
    hab gerade gesehen das du mir auch ein Script gebastelt hast.

    Vielen Dank jetzt kann ich super entscheiden welches Script ich in Zukunft nehmen werde.

    Danke nochmal für eure Hilfe

    ----------------------------------------------------------------------------------------------------------------------
    Früher musste man Drachen töten und konnte die Jungfrau heiraten.
    Heute gibt es keine Jungfrauen mehr, man muss den Drachen heiraten!