[UDF] Resize Images

Partagez des fonctions et des UDF AutoIt.
Règles du forum
.
Répondre
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

[UDF] Resize Images

#1

Message 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
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [UDF] Resize Images

#2

Message par bloodwolff »

Cool je vais l'utiliser pour mon script de screen :P
Compte skype : bloodwolfff
Répondre