Page 1 sur 1

[UDF] Resize Images

Posté : mar. 02 nov. 2010 01:35
par matwachich
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)

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

Re: [UDF] Resize Images

Posté : mar. 02 nov. 2010 02:13
par bloodwolff
Cool je vais l'utiliser pour mon script de screen :P