AutoIt en Español
Bienvenido al foro de Autoit3 en Español.

Aquí encontrarás la documentación oficial del lenguaje y muchos otros recursos relacionados.

Mis mejores deseos de éxitos!

ayuda con redimension de imagenes

Ir abajo

ayuda con redimension de imagenes

Mensaje  Duni el Mar Oct 25, 2011 7:43 am

Wenas!! Soy demasiado nuevo en esto del autoit y necesito que alguien me eche una mano (o dos) con este programilla que estoy intentando hacer. Pedi ayuda en el foro de los amigos ingleses pero pasan de mi :p.
El programa se trata a grandes rasgos de coger unas imagenes de una carpeta, darles la resolucion que quieras mediante una ventana aparte (no en el mismo programa) y que las redimensione todas.
Lo que tengo echo es que coja las imagenes y que me salga el form, pero me sale para cada una de las imagenes, cosa que no quiero.
A ver si alguien es capaz de corregirmelo, se lo agradeceria muchisimo porq llevo ya demasiado tiempo con esto y me va a estallar la cabeza

Código:

#include <File.au3>
#include <GDIPlus.au3>
#include <GUIConstants.au3>
_GDIPlus_Startup()

Global $folder = FileSelectFolder("Select folder with pictures", "", 4) & "\"
Global $outfolder = @ScriptDir & "\Resized"
If @error Then Exit MsgBox(0, "Information", "Nothing selected - closing program", 10)
Global $aFiles = _FileListToArray($folder, "*.???", 0)
For $i = 1 To $aFiles[0]
    If StringRegExp($aFiles[$i], "(?i).*\.png|.*\.jpg|.*\.bmp", 0) Then ResizeImage($folder & $aFiles[$i], 0, 0, $outfolder, -1)
Next
_GDIPlus_Shutdown()
ShellExecute($outfolder)
Exit

;======================================================================================
; Function Name:        ResizeImage
; Description:          Loads an image and scales it to desired width or height
;
; Parameters:          $fImage:                image file to be loaded
;                              $iW:                    new image width. If $iW = 0 then default values is 96
;                              $iH:                        new image height. If $iH = 0 then default values is 96
;                              $fDestFolder:      destination folder where the scaled image should be saved to
;                              $fExt:                  image output format (can be jpg, png, bmp, gif, tiff) - default is PNG, -1 to keep extension
;                              $fPart:                filename part to separate it from orignal name. Default is .resized. -> filename.resized.ext
;
; Requirement(s):      GDIPlus.au3
; Return Value(s):  Success: True, Error: see below
; Error codes:          1: no filename given
;                              2:  filename doesn't exist
;                              3: image couldn't be resized
;                              4: resized image couldn't be saved
;
; Author(s):                UEZ
; Version:                  v0.80 Build 2011-08-29 Beta
;=======================================================================================
Func ResizeImage($fImage, $iW, $iH, $fDestFolder, $fExt = "png", $fPart = ".resized.")
    If $fImage = "" Then Return SetError(1, 0, 0)
    If Not FileExists($fImage) Then Return SetError(2, 0, 0)
    Local $iOutputFormats = "jpg,png,bmp,gif,tif"
    If Not StringInStr($iOutputFormats, $fExt)  Then
        If $fExt <> -1 Then
            $fExt = "png"
        Else
            If Not StringInStr($iOutputFormats, StringRight($fImage, 3)) Then
                $fExt = "png"
            Else
                $fExt = StringRight($fImage, 3)
            EndIf
        EndIf
    EndIf
    Local $fName = StringRegExpReplace($fImage, ".*\\(.*).{4}", "$1")
    Local $declared = True
    If Not $ghGDIPDll Then
        _GDIPlus_Startup()
        $declared = False
    EndIf
    Local $hImageFromFile = _GDIPlus_ImageLoadFromFile($fImage)
    Local $iWidth = _GDIPlus_ImageGetWidth($hImageFromFile)
    Local $iHeight = _GDIPlus_ImageGetHeight($hImageFromFile)
    Local $x, $y
    If Not $iW And Not $iH Then
        $ResizeForm = GUICreate("Cambiar tamaño imagen", 210, 110, -1, -1)
    $ResizeLabel1 = GUICtrlCreateLabel("Tamaño :  " & $iWidth & " x " & $iHeight, 16, 16, 137, 17)
    $ResizeInput1 = GUICtrlCreateInput("", 56, 40, 41, 21)
    $ResizeLabel2 = GUICtrlCreateLabel("Ancho :", 10, 48, 38, 17)
    $ResizeLabel3 = GUICtrlCreateLabel("Alto :", 115, 48, 41, 17)
    $ResizeInput2 = GUICtrlCreateInput("", 152, 40, 41, 21)
    $ResizeButton1 = GUICtrlCreateButton("OK", 16, 72, 83, 25, 0)
    $ResizeButton2 = GUICtrlCreateButton("Cancelar", 112, 72, 83, 25, 0)
     GUISetState(@SW_SHOW, $ResizeForm)
    While 1
        $msg = GUIGetMsg(1)
      
        If $msg[0] = $ResizeButton1 Then
            $NewWidth = GUICtrlRead($ResizeInput1)
            $NewHeight = GUICtrlRead($ResizeInput2)
            ExitLoop
        ElseIf $msg[0] = $ResizeButton2 Or $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $ResizeForm Then
            ExitLoop
        ElseIf $msg[0] = $GUI_EVENT_CLOSE And $msg[1] = $GUI Then
            Exit
        EndIf
    WEnd
   GUIDelete($ResizeForm)
    ElseIf $iW And Not $iH Then
        $x = $iW / $iWidth
        $iH = Int($iHeight * $x)
    ElseIf Not $iW And $iH Then
        $y = $iH / $iHeight
        $iW = Int($iWidth * $y)
    EndIf
    Local $hImageThumbnail = DllCall($ghGDIPDll, "uint", "GdipGetImageThumbnail", "handle", $hImageFromFile, "uint", $NewWidth, "uint", $NewHeight, "int*", 0, "ptr", 0, "ptr", 0)
    If @error Then
        _GDIPlus_ImageDispose($hImageFromFile)
        If Not $declared Then _GDIPlus_Shutdown()
        Return SetError(3, 0, 0)
    EndIf
    $hImageThumbnail = $hImageThumbnail[4]
    If Not FileExists($fDestFolder) Then DirCreate($fDestFolder)
    If $fPart = "" Then $fPart = "."
    If Not _GDIPlus_ImageSaveToFile($hImageThumbnail, $fDestFolder & "\" & $fName & $fPart & $fExt) Then
        _GDIPlus_ImageDispose($hImageFromFile)
        _GDIPlus_ImageDispose($hImageThumbnail)
        If Not $declared Then _GDIPlus_Shutdown()
        Return SetError(4, 0, 0)
    EndIf
    _GDIPlus_ImageDispose($hImageFromFile)
    _GDIPlus_ImageDispose($hImageThumbnail)
    If Not $declared Then _GDIPlus_Shutdown()
    Return True
EndFunc

Muchas gracias por las molestias

Duni

Mensajes : 1
Reputación : 0
Fecha de inscripción : 25/10/2011

Ver perfil de usuario

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.