hi leute,
kennt einer von euch einen "befehl" oder so womit man die pixelgröße eines bildes verändern kann.
(also eine art converter)
beispiel:
[vorher] lol.bmp 500x500
[umwandeln]
[nachher] lol.bmp 240x240
geht das?
mb team2way
hi leute,
kennt einer von euch einen "befehl" oder so womit man die pixelgröße eines bildes verändern kann.
(also eine art converter)
beispiel:
[vorher] lol.bmp 500x500
[umwandeln]
[nachher] lol.bmp 240x240
geht das?
mb team2way
Also da ich auch oft Pixel verändere habe ich ein kleines Programm gefunden
http://software-portal.faz.net/ie/36570/Photo_Gadget ist eigentlich ganz gut !!!
ok klar ich kenn auch viele von den tools...aber wollt mal wissen ob man das auch mit autoit umsetzen kann
Hi
Ja, es geht:
[autoit]#include <GdiPlus.au3>
[/autoit][autoit][/autoit][autoit]Global $sFile = FileOpenDialog("Wähle Bild aus...", @WorkingDir, "(*.bmp)(*.jpg)(*.tif)", 1)
Global $sExt = StringRight($sFile, 3)
Global $iWidth = 400
Global $iHeight = 300
_GDIPlus_Startup()
Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
_GDIPlus_GraphicsDispose($hGraphics)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
$hImage = _GDIPlus_ImageLoadFromFile($sFile)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iWidth, $iHeight)
_GDIPlus_ImageSaveToFile($hBitmap, StringTrimRight($sFile, 4) & "_resized." & $sExt)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Allerdings wird das Ziel aus dem Desktop erstellt und deshalb hat man dann 96 Dpi Auflösung, egal wieviel Dpi das Original hatte...
Ist aber nur relevant, wenn man mit mm statt px arbeiten will...
lgE
Hi nochmals
Da ich für mein aktuelles Projekt eine Funktion brauche, welche die Dpiauflösung verändern kann, hab ich nun diese Funktion geschrieben:
[autoit]Func _GDIPlus_BitmapSetResolution($hBmp, $iDpiX, $iDpiY)
Local $aResult
$aResult = DllCall($ghGDIPDll, "int", "GdipBitmapSetResolution", "ptr", $hBmp, "float", $iDpiX, "float", $iDpiY)
If @error Then Return SetError(@error, @extended, 0)
Return SetError($aResult[0], 0, $aResult[0])
EndFunc ;==>_GDIPlus_BitmapSetResolution
d.h. Mein Beispiel von oben soll nun so aussehen:
[autoit]#include <GdiPlus.au3>
[/autoit][autoit][/autoit][autoit]Global $sFile = FileOpenDialog("Wähle Bild aus...", @WorkingDir, "(*.bmp)(*.jpg)(*.tif)", 1)
If @error Then Exit
Global $sExt = StringRight($sFile, 3)
Global $iWidth = 400
Global $iHeight = 300
_GDIPlus_Startup()
Global $hImage = _GDIPlus_ImageLoadFromFile($sFile)
Global $iOrigDpiX = _GDIPlus_ImageGetHorizontalResolution($hImage)
Global $iOrigDpiY = _GDIPlus_ImageGetVerticalResolution($hImage)
Global $hGraphics = _GDIPlus_GraphicsCreateFromHWND(_WinAPI_GetDesktopWindow())
Global $hBitmap = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hGraphics)
_GDIPlus_BitmapSetResolution($hBitmap, $iOrigDpiX, $iOrigDpiY)
[/autoit][autoit][/autoit][autoit]_GDIPlus_GraphicsDispose($hGraphics)
$hGraphics = _GDIPlus_ImageGetGraphicsContext($hBitmap)
_GDIPlus_GraphicsDrawImageRect($hGraphics, $hImage, 0, 0, $iWidth, $iHeight)
_GDIPlus_ImageSaveToFile($hBitmap, StringTrimRight($sFile, 4) & "_resized." & $sExt)
_GDIPlus_GraphicsDispose($hGraphics)
_GDIPlus_BitmapDispose($hBitmap)
_GDIPlus_ImageDispose($hImage)
_GDIPlus_Shutdown()
Func _GDIPlus_BitmapSetResolution($hBmp, $iDpiX, $iDpiY)
Local $aResult
$aResult = DllCall($ghGDIPDll, "int", "GdipBitmapSetResolution", "ptr", $hBmp, "float", $iDpiX, "float", $iDpiY)
If @error Then Return SetError(@error, @extended, 0)
Return SetError($aResult[0], 0, $aResult[0])
EndFunc ;==>_GDIPlus_BitmapSetResolution
lgE
ein fettes THX!!!
bei mir kommt allerding ab zeile 11 dieser fehler:
[autoit]Global $iOrigDpiX = _GDIPlus_ImageGetHorizontalResolution($hImage)
Global $iOrigDpiY = ^ ERROR
Error: Unkonown funktion name.
[/autoit]
cya team2way
Welche Autoit-Version hast du denn?
Habs gerade getestet, mit AutoIt V3.3.0.0 gehts.
Hast du Autoit Version 3.3.0.0 ?
ka wo sieht man das...ich installiers einfach noch mal neu
ahh ok habs grad gesehn ich hab noch version 3.2.1.0