Deathbringer Posted December 12, 2010 Posted December 12, 2010 (edited) Edited January 8, 2011 by JosIsaFucktard
UEZ Posted December 12, 2010 Posted December 12, 2010 Try this: #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GDIPlus.au3> If Not _GDIPlus_Startup() Then Exit MsgBox(16, "GDI+ initialization failed", "The program cannot continue.", 10) Global $sPath = @ScriptDir & "\Tic-Tac-Toe.png" Global $hImageOld = _GDIPlus_ImageLoadFromFile($sPath) _ResizeImage(False, @ScriptDir & "\Resized.jpg", $hImageOld) _ResizeImage(True, @ScriptDir & "\Rotated.jpg", $hImageOld) _GDIPlus_ImageDispose($hImageOld) _GDIPlus_Shutdown() Exit Func _ResizeImage($f_Rotate, $s_OutPath, $hImage, $f_Degree = 90, $iNewWidth = 619, $iNewHeight = 1400) Local $iStride = 0, $iPixelFormat = 0x0026200A, $pScan0 = 0 Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iNewWidth, "int", $iNewHeight, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "int*", 0) Local $hBitmap = $aResult[6] Local $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) Local $hMatrix = _GDIPlus_MatrixCreate() If $f_Rotate Then _GDIPlus_MatrixTranslate($hMatrix, $iNewWidth / 2, $iNewHeight / 2) _GDIPlus_MatrixRotate($hMatrix, $f_Degree, "False") _GDIPlus_GraphicsSetTransform($hBackbuffer, $hMatrix) _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, -$iNewWidth / 2, -$iNewHeight / 2, $iNewWidth, $iNewHeight) Else _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, 0, 0, $iNewWidth, $iNewHeight) EndIf _GDIPlus_ImageSaveToFile($hBitmap, $s_OutPath) _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_GraphicsDispose($hBackbuffer) EndFunc ;==>_ResizeImage Br, UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Authenticity Posted December 13, 2010 Posted December 13, 2010 expandcollapse popup#include <GDIPlus.au3> _GDIPlus_Startup() Local $hImg = _GDIPlus_ImageLoadFromFile("tic_tac_toe.png") _GDIPlus_ImageRotateFlip($hImg, 1) _GDIPlus_ImageSaveToFile($hImg, "Test.png") _GDIPlus_ImageDispose($hImg) _GDIPlus_Shutdown() ; #FUNCTION# ==================================================================================================================== ; Name...........: _GDIPlus_ImageRotateFlip ; Description ...: Rotates and flips an image ; Syntax.........: _GDIPlus_ImageRotateFlip($hImage, $iRotateFlipType) ; Parameters ....: $hImage - Pointer to an Image object ; $iRotateFlipType - Type of rotation and flip: ; |0 - No rotation and no flipping (A 180-degree rotation, a horizontal flip and then a vertical flip) ; |1 - A 90-degree rotation without flipping (A 270-degree rotation, a horizontal flip and then a vertical flip) ; |2 - A 180-degree rotation without flipping (No rotation, a horizontal flip folow by a vertical flip) ; |3 - A 270-degree rotation without flipping (A 90-degree rotation, a horizontal flip and then a vertical flip) ; |4 - No rotation and a horizontal flip (A 180-degree rotation followed by a vertical flip) ; |5 - A 90-degree rotation followed by a horizontal flip (A 270-degree rotation followed by a vertical flip) ; |6 - A 180-degree rotation followed by a horizontal flip (No rotation and a vertical flip) ; |7 - A 270-degree rotation followed by a horizontal flip (A 90-degree rotation followed by a vertical flip) ; Return values .: Success - True ; Failure - False ; Remarks .......: None ; Related .......: None ; Link ..........; @@MsdnLink@@ GdipImageRotateFlip ; Example .......; No ; =============================================================================================================================== Func _GDIPlus_ImageRotateFlip($hImage, $iRotateFlipType) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipImageRotateFlip", "hwnd", $hImage, "int", $iRotateFlipType) Return SetError($aResult[0], 0, $aResult[0] = 0) EndFunc ;==>_GDIPlus_ImageRotateFlip
smashly Posted December 13, 2010 Posted December 13, 2010 Hi, thanks Authenticity, nice. Another gdip function for my personal collection... sweet. For the op resize and rotate using Authenticity function.expandcollapse popup#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GDIPlus.au3> _ResizeRotate(@ScriptDir & "\tic_tac_toe.png", @ScriptDir & "\Rotate90.jpg", 700, 300, 1) Func _ResizeRotate($sInFile, $sOutFile, $iWidth, $iHeight, $iRotate) Local $hInImage, $hInGraphic, $hOutImage, $hOutGraphic _GDIPlus_Startup() $hInImage = _GDIPlus_ImageLoadFromFile($sInFile) _GDIPlus_ImageRotateFlip($hInImage, $iRotate) $hInGraphic = _GDIPlus_ImageGetGraphicsContext($hInImage) $hOutImage = _GDIPlus_BitmapCreateFromGraphics($iWidth, $iHeight, $hInGraphic) _GDIPlus_GraphicsDispose($hInGraphic) $hOutGraphic = _GDIPlus_ImageGetGraphicsContext($hOutImage) _GDIPlus_GraphicsDrawImageRect($hOutGraphic, $hInImage, 0, 0, $iWidth, $iHeight) _GDIPlus_GraphicsDispose($hOutGraphic) _GDIPlus_ImageDispose($hInImage) _GDIPlus_ImageSaveToFile($hOutImage, $sOutFile) _GDIPlus_ImageDispose($hOutImage) _GDIPlus_Shutdown() EndFunc ;==>_ResizeRotate ; #FUNCTION# ==================================================================================================================== ; Name...........: _GDIPlus_ImageRotateFlip ; Description ...: Rotates and flips an image ; Syntax.........: _GDIPlus_ImageRotateFlip($hImage, $iRotateFlipType) ; Parameters ....: $hImage - Pointer to an Image object ; $iRotateFlipType - Type of rotation and flip: ; |0 - No rotation and no flipping (A 180-degree rotation, a horizontal flip and then a vertical flip) ; |1 - A 90-degree rotation without flipping (A 270-degree rotation, a horizontal flip and then a vertical flip) ; |2 - A 180-degree rotation without flipping (No rotation, a horizontal flip folow by a vertical flip) ; |3 - A 270-degree rotation without flipping (A 90-degree rotation, a horizontal flip and then a vertical flip) ; |4 - No rotation and a horizontal flip (A 180-degree rotation followed by a vertical flip) ; |5 - A 90-degree rotation followed by a horizontal flip (A 270-degree rotation followed by a vertical flip) ; |6 - A 180-degree rotation followed by a horizontal flip (No rotation and a vertical flip) ; |7 - A 270-degree rotation followed by a horizontal flip (A 90-degree rotation followed by a vertical flip) ; Return values .: Success - True ; Failure - False ; Remarks .......: None ; Related .......: None ; Link ..........; @@MsdnLink@@ GdipImageRotateFlip ; Example .......; No ; =============================================================================================================================== Func _GDIPlus_ImageRotateFlip($hImage, $iRotateFlipType) Local $aResult = DllCall($ghGDIPDll, "uint", "GdipImageRotateFlip", "hwnd", $hImage, "int", $iRotateFlipType) Return SetError($aResult[0], 0, $aResult[0] = 0) EndFunc ;==>_GDIPlus_ImageRotateFlip Cheers
UEZ Posted December 13, 2010 Posted December 13, 2010 (edited) Yes, to have a closer look to GDIp.au3 would save a lot of time for finding a solution to rotate and save and image by 90° steps... Here another method for a rotation of -90,90,-270,270: expandcollapse popup;~ #AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <GDIPlus.au3> If Not _GDIPlus_Startup() Then Exit MsgBox(16, "GDI+ initialization failed", "The program cannot continue.", 10) Global $sPath = @ScriptDir & "\tictactoey.jpg" Global $hImageOld = _GDIPlus_ImageLoadFromFile($sPath) _ResizeImage(False, @ScriptDir & "\Resized.jpg", $hImageOld) _ResizeImage(True, @ScriptDir & "\Rotated.jpg", $hImageOld) _GDIPlus_ImageDispose($hImageOld) _GDIPlus_Shutdown() Exit Func _ResizeImage($f_Rotate, $s_OutPath, $hImage, $f_Degree = 90, $iNewWidth = 618, $iNewHeight = 1376) Local $iStride = 0, $iPixelFormat = 0x0026200A, $pScan0 = 0 Local $iW = _GDIPlus_ImageGetWidth($hImage) Local $iH = _GDIPlus_ImageGetHeight($hImage) Local $bD = $iW + $iH If $f_Rotate Then Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $bD, "int", $bD, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "int*", 0) Else Local $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iNewWidth, "int", $iNewHeight, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "int*", 0) EndIf Local $hBitmap = $aResult[6] Local $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap) DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hBackbuffer, "int", 5) If $f_Rotate And (Abs($f_Degree) = 90 Or Abs($f_Degree) = 270) Then $aResult = DllCall($ghGDIPDll, "uint", "GdipCreateBitmapFromScan0", "int", $iH, "int", $iW, "int", $iStride, "int", $iPixelFormat, "ptr", $pScan0, "int*", 0) Local $hBitmap2 = $aResult[6] Local $hBackbuffer2 = _GDIPlus_ImageGetGraphicsContext($hBitmap2) DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hBackbuffer2, "int", 5) Local $hMatrix = _GDIPlus_MatrixCreate() _GDIPlus_MatrixTranslate($hMatrix, $bD / 2, $bD / 2) _GDIPlus_MatrixRotate($hMatrix, $f_Degree, 0) _GDIPlus_MatrixTranslate($hMatrix, -$bD / 2, -$bD / 2) _GDIPlus_GraphicsSetTransform($hBackbuffer, $hMatrix) _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, $bD / 2 - $iW / 2, $bD / 2 - $iH / 2, $iW, $iH) $aResult = DllCall($ghGDIPDll, "uint", "GdipCloneImage", "hwnd", $hBitmap, "int*", 0) $hTemp = $aResult[2] DllCall($ghGDIPDll, "uint", "GdipSetInterpolationMode", "hwnd", $hTemp, "int", 5) _GDIPlus_GraphicsDrawImageRectRect($hBackbuffer2, $hTemp, $bD / 2 - $iH / 2, $bD / 2 - $iW / 2, $iH, $iW, 0, 0, $iH, $iW) _GDIPlus_ImageSaveToFile($hBitmap2, $s_OutPath) _GDIPlus_BitmapDispose($hTemp) _GDIPlus_MatrixDispose($hMatrix) _GDIPlus_BitmapDispose($hBitmap2) _GDIPlus_GraphicsDispose($hBackbuffer2) Else _GDIPlus_GraphicsDrawImageRect($hBackbuffer, $hImage, 0, 0, $iNewWidth, $iNewHeight) _GDIPlus_ImageSaveToFile($hBitmap, $s_OutPath) EndIf _GDIPlus_BitmapDispose($hBitmap) _GDIPlus_GraphicsDispose($hBackbuffer) EndFunc ;==>_ResizeImage Br, UEZ Edited December 13, 2010 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now