Hallo,
ich habe schon ein wenig gegoogelt und überlegt, aber ich habe nirgendwo gefunden wie man mehrere Bilder zu einer Bilddatei, welche sich lediglich in der Höhe verändert, zusammenfügt.. Für ein kleines Beispiel wäre ich sehr dankbar.
Lg
Hallo,
ich habe schon ein wenig gegoogelt und überlegt, aber ich habe nirgendwo gefunden wie man mehrere Bilder zu einer Bilddatei, welche sich lediglich in der Höhe verändert, zusammenfügt.. Für ein kleines Beispiel wäre ich sehr dankbar.
Lg
Erstell eine Bitmap, krieg davon Graphics und mal deine 2 Bilder dort rein. Dispose Graphics und deine Bitmap ist fertig aus den 2 Bilder zusammengefügt
"Erstelle ein Bitmap" Wie? Per Hand ? Per irgendeiner Funktion? Wenn ja, mit welcher? mit "_GDIPlus_BitmapCreateFromGraphics " ? Wenn ja, woher kommt das Graphikobjekt? Also nein. Es muss ja aus dem Nichts etwas gezeichnet werden. Oder zeichne ich ein Rechteck und fülle es mit weißer Farbe? Keine Ahnung, ein wenig mehr wär hilfreich um nicht im Trüben zu fischen.. danke
Edit:
Ich vermute das Beispiel in der UDF-Hilfe für die Funktion
Funktion _GDIPlus_GraphicsDrawImageRect entspricht dem, was ich suche..
#include <GDIPlus.au3>
_gdiplus_graphicscreatefromhwnd
_gdiplus_bitmapcreatefromgraphics
_gdiplus_imagegetgraphicscontext
_gdiplus_graphicsdrawimagerect
_gdiplus_graphicsdispose
_gdiplus_bitmapdispose
_gdiplus_imageloadfromfile
_gdiplus_imagedispose
Ich hoffe das reicht (drauf klicken gibt Hilfe)
Danke
Hey ho,
folgenden Problem.. wenn ich ein Bild habe und dort ein weiteres Bild darunter ranhängen möchte, dann wird ja das Originalbild nicht auf die neue größe Vergrößert, die es benötigen würde, um vollständig dargestellt zu werden.
Was ich bräuchte, wäre also etwas á la:
Leeres Rechteck erzeugen und Bild einfügen
Maße des Erzeugten Rechtecks und Maße des einzufügenden Bildes ermitteln
Neues Rechteck mit den zu benötigenden Maßen erstellen und einzufügendes Bild einfügen.
Und so weiter..
Wie erstelle ich ein "Weißes Rechteck" ?
lg
Hier ein kleines Beispiel:
#include <GDIplus.au3>
Global $image = FileOpenDialog("Bild auswählen", @ScriptDir & "\", "Images (*.jpg;*.bmp;*.png)")
If @error Then Exit
_GDIPlus_Startup()
Global $bitmap_from_file = _GDIPlus_BitmapCreateFromFile($image)
Global Const $iX = _GDIPlus_ImageGetWidth($bitmap_from_file)
Global Const $iY = _GDIPlus_ImageGetHeight($bitmap_from_file)
Global Const $width = $iX
Global Const $height = 2 * $iY
Global $hwnd = GUICreate("Clone Y", $width, $height)
Global $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
Global $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
Global $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, $iY)
GUISetState()
Do
_GDIPlus_GraphicsDrawImageRect($graphics, $bitmap, 0, 0, $width, $height)
Until GUIGetMsg() = -3 * Sleep(30)
_GDIPlus_ImageSaveToFile($bitmap, @ScriptDir & "\Test.bmp")
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
GUIDelete($hwnd)
Exit
Hausaufgabe: den Code erweitern, indem du ein zweites Bild aussuchst und es unter das erste Bild kopierst
Gruß,
UEZ
Dankeschön, soweit so gut..
allerdings habe ich noch immer ein Problem !
Jedes Bild hat die größe 1200x1700 ( etwas kleiner). In dem erstellten Bild, ist das Bild aber aufeinmal nur noch halb so groß?
Hier mein Code:
#include <GDIplus.au3>
Global $image = StringSplit(FileOpenDialog("Bild auswählen", @ScriptDir & "\", "Images (*.jpg;*.bmp;*.png)",1+4), "|")
If @error Then Exit
_GDIPlus_Startup()
Global Const $width = 1200
Global Const $height = ($image[0]-1) * 1700
Global $hwnd = GUICreate("Clone Y", $width, $height)
Global $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
Global $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
Global $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
for $i = 2 to $image[0]
$bitmap_from_file = _GDIPlus_BitmapCreateFromFile($image[1]&"\"&$image[$i])
if $i = 2 then
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, 0)
$iY = 1700
else
_GDIPlus_GraphicsDrawImage($backbuffer, $bitmap_from_file, 0, $iY)
$iY = $iY + 1700
endif
next
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]_GDIPlus_ImageSaveToFile($bitmap, @ScriptDir & "\Test.jpg")
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_GraphicsDispose($graphics)
_GDIPlus_GraphicsDispose($backbuffer)
_GDIPlus_Shutdown()
GUIDelete($hwnd)
Exit
Lade bitte mal 2 Bilder hoch, so dass ich den "Fehler" nachvollziehen kann!
Gruß,
UEZ
Hallo,
hier 3 Bilder freier Auswahl..