[UDF] Resize Images
Posté : mar. 02 nov. 2010 01:35
Un UDF tout simple pour redmensioner des images! pas besoin d'exemple je pense
(La gestion des erreurs est trop simpliste je sais, mais j'ai pas beaucoup d'expérience en GDI)
(La gestion des erreurs est trop simpliste je sais, mais j'ai pas beaucoup d'expérience en GDI)
Code : Tout sélectionner
#include-once
#include <gdiplus.au3>
;===============================================================================
;
; Function Name: _resizeImage($oldImage, $newImage, $newW, $newH)
; Description:: Modifie la taille d'une image
; Parameter(s): $oldImage = Chemin de l'image à modifier
; $newImage = Chemin de sortie
; $newW = nouvelle largeur
; $newH = nouvelle hauteur
; Return Value(s): Sucess -> 1, @Extended = Taille de la nouvelle image
; Failed -> 0
; Author(s): Matwachich, avec l'udf _SavehBitmapEx (Chercher sur le forum anglais, je le retrouve pas)
;
;===============================================================================
;
Func _imageResize($oldImage, $newImage, $newW, $newH)
Local $img, $gContext, $newBmp, $gNewContext, $closeGDI = False
If $ghGDIPDll = 0 Then
_GDIPlus_Startup()
$closeGDI = True
EndIf
$img = _GDIPlus_ImageLoadFromFile($oldImage)
$gContext = _GDIPlus_ImageGetGraphicsContext($img)
$newBmp = _GDIPlus_BitmapCreateFromGraphics($newW, $newH, $gContext)
$gNewContext = _GDIPlus_ImageGetGraphicsContext($newBmp)
_GDIPlus_GraphicsDrawImageRect($gNewContext, $img, 0, 0, $newW, $newH)
_GDIPlus_ImageSaveToFile($newBmp, $newImage)
_GDIPlus_ImageDispose($img)
_GDIPlus_GraphicsDispose($gContext)
_GDIPlus_GraphicsDispose($gNewContext)
_GDIPlus_BitmapDispose($newBmp)
If Not FileExists($newImage) Then Return 0
Return SetError(0, FileGetSize($newImage), 1)
If $closeGDI Then _GDIPlus_Shutdown()
EndFunc ;==>_imageResize
;===============================================================================
;
; Function Name: _resizeImage($oldImage, $newImage, $percent)
; Description:: Modifie la taille d'une image (en pourcentage)
; Parameter(s): $oldImage = Chemin de l'image à modifier
; $newImage = Chemin de sortie
; $percent = Pourcentage
; Return Value(s): Sucess -> 1, @Extended = Taille de la nouvelle image
; Failed -> 0
; Author(s): Matwachich, avec l'udf _SavehBitmapEx (Chercher sur le forum anglais, je le retrouve pas)
;
;===============================================================================
;
Func _imageResizePercent($oldImage, $newImage, $percent)
Local $img, $gContext, $newW, $newH, $newBmp, $gNewContext, $closeGDI = False
If $ghGDIPDll = 0 Then
_GDIPlus_Startup()
$closeGDI = True
EndIf
$img = _GDIPlus_ImageLoadFromFile($oldImage)
$gContext = _GDIPlus_ImageGetGraphicsContext($img)
$newW = (_GDIPlus_ImageGetWidth($img) * $percent) / 100
$newH = (_GDIPlus_ImageGetHeight($img) * $percent) / 100
$newBmp = _GDIPlus_BitmapCreateFromGraphics($newW, $newH, $gContext)
$gNewContext = _GDIPlus_ImageGetGraphicsContext($newBmp)
_GDIPlus_GraphicsDrawImageRect($gNewContext, $img, 0, 0, $newW, $newH)
_GDIPlus_ImageSaveToFile($newBmp, $newImage)
_GDIPlus_ImageDispose($img)
_GDIPlus_GraphicsDispose($gContext)
_GDIPlus_GraphicsDispose($gNewContext)
_GDIPlus_BitmapDispose($newBmp)
If Not FileExists($newImage) Then Return 0
Return SetError(0, FileGetSize($newImage), 1)
If $closeGDI Then _GDIPlus_Shutdown()
EndFunc ;==>_imageResizePercent