(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