Hey@all
Ich möchte von dem Return von "_GDIPlus_ImageLoadFromFile($sFileName)" die Breite ändern.
Dh, dass ich zB das Bild halbieren oder vierteln möchte:
Bild das ich benutze:100x100pixel
Daraus möchte ich machen:90x100pixel oder 82x100pixel (nicht verengen, sondern dort "abschneiden"=>10 oder 18pixel wegschneiden)
MfG AntiSpeed
GDI+, von _GDIPlus_ImageLoadFromFile($sFileName) die Breite ändern (nicht zoomen)
-
- [ gelöst ]
-
AntiSpeed -
12. September 2010 um 14:56 -
Geschlossen -
Erledigt
-
-
Vielleicht so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)_GDIPlus_Startup ()
[/autoit] [autoit][/autoit] [autoit]$hIFile = _GDIPlus_ImageLoadFromFile("c:\Program Files\AutoIt3\Examples\GUI\mslogo.jpg")
[/autoit] [autoit][/autoit] [autoit]
$iW = _GDIPlus_ImageGetWidth($hIFile)
$iH = _GDIPlus_ImageGetHeight($hIFile)$crop_x1 = 46
[/autoit] [autoit][/autoit] [autoit]
$crop_y1 = 4
$crop_x2 = 88
$crop_y2 = 13
$width = $crop_x2 - $crop_x1
$height = $crop_y2 - $crop_y1$hgui = GUICreate("GDI+ Image Cropping by UEZ", $iW, $iH)
[/autoit] [autoit][/autoit] [autoit]
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hBitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $hGraphic)
$hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)
GUISetOnEvent(-3, "_Exit")
GUISetState()_GDIPlus_GraphicsDrawImageRectRect($hBackbuffer, $hIFile, $crop_x1, $crop_y1, $width, $height, 0, 0, $width, $height)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
_GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, $iW / 2 - $width / 2, $iH / 2 - $height / 2)
;~ _GDIPlus_ImageSaveToFile ($hBitmap, "Cropped.jpg")While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
[/autoit]
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_GraphicsDispose($hBackbuffer)
_GDIPlus_ImageDispose($hIFile)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndFuncGruß,
UEZ -
Hallo AntiSpeed,
eine Möglichkeit ist
[autoit]_GDIPlus_BitmapCloneArea
[/autoit]hier einmal das leicht abgeänderte Beospiel der Hilfe:
Spoiler anzeigen
[autoit]#include <GDIPlus.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <ScreenCapture.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
[/autoit] [autoit][/autoit] [autoit]
Local $hBitmap, $hClone, $hImage, $iX, $iY
; Initialize GDI+ library
_GDIPlus_StartUp (); Capture 32 bit bitmap
[/autoit] [autoit][/autoit] [autoit]
$hImage = _GDIPlus_ImageLoadFromFile ("C:\Dokumente und Einstellungen\Bert\Eigene Dateien\Beetle9.jpg"); Create 24 bit bitmap clone
[/autoit] [autoit][/autoit] [autoit]
$iX = _GDIPlus_ImageGetWidth ($hImage) *.5
$iY = _GDIPlus_ImageGetHeight ($hImage) *.5
$hClone = _GDIPlus_BitmapCloneArea ($hImage, 0, 0, $iX, $iY, $GDIP_PXF24RGB); Save bitmap to file
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageSaveToFile ($hClone, @MyDocumentsDir & "\GDIPlus_Image.bmp"); Clean up resources
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ImageDispose ($hClone)
_GDIPlus_ImageDispose ($hImage); Shut down GDI+ library
[/autoit] [autoit][/autoit] [autoit]
_GDIPlus_ShutDown ()EndFunc ;==>_Main
[/autoit]das Skript speichert das linke obere Viertel eines
ScreenshotsJPG-Files in eine Datei,Edit: Skript ausgetauscht (anstelle eines Screenshots, wird jetzt ein JPG genommen)
mfg autoBert -
In der Tat ist der Code mit _GDIPlus_BitmapCloneArea() kürzer:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GDIPlus.au3>
Opt("GUIOnEventMode", 1)_GDIPlus_Startup ()
[/autoit] [autoit][/autoit] [autoit]$hIFile = _GDIPlus_ImageLoadFromFile("c:\Program Files\AutoIt3\Examples\GUI\mslogo.jpg")
[/autoit] [autoit][/autoit] [autoit]
$iW = _GDIPlus_ImageGetWidth($hIFile)
$iH = _GDIPlus_ImageGetHeight($hIFile)$crop_x1 = 46
[/autoit] [autoit][/autoit] [autoit]
$crop_y1 = 4
$crop_x2 = 88
$crop_y2 = 13
$width = $crop_x2 - $crop_x1
$height = $crop_y2 - $crop_y1$hgui = GUICreate("GDI+ Image Cropping by UEZ", $iW, $iH)
[/autoit] [autoit][/autoit] [autoit]
$hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hClone = _GDIPlus_BitmapCloneArea($hIFile, $crop_x1, $crop_y1, $width, $height)
GUISetOnEvent(-3, "_Exit")
GUISetBkColor($hgui, 0)
GUISetState()_GDIPlus_GraphicsDrawImage($hGraphic, $hClone, $iW / 2 - $width / 2, $iH / 2 - $height / 2)
[/autoit] [autoit][/autoit] [autoit]
;~ _GDIPlus_ImageSaveToFile ($hClone, "Cropped.jpg")While Sleep(1000)
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _Exit()
[/autoit]
_GDIPlus_BitmapDispose($hClone)
_GDIPlus_ImageDispose($hIFile)
_GDIPlus_GraphicsDispose($hGraphic)
_GDIPlus_Shutdown()
Exit
EndFuncDanke autoBert!
Gruß,
UEZ -
Danke an euch Beide .
Ist genau das was ich haben wollte .