free web page hit counter

Escalado de imágenes en batch con Gimp

Estos días me estaba haciendo falta cambiar el tamaño a un montón de fotos a la vez y no sabía como, así que me puse a investigar como hacerlo con mi programa de edición de imágenes favorito, el Gimp, el cual llevo usando desde hace bastante tiempo. La verdad es que Gimp es una opción realmente buena, que aunque muchos usuarios provenientes de otros programas similares comerciales lo vean extraño, es realmente potente, y por lo que además he podido hoy ver, realmente extensible.

Aunque he estado un ratito buscando, la mejor solución que he encontrado ha sido en este foro:

http://www.gimptalk.com/forum/script-fu-batch-resize-t9440.html

Ahí se podía acceder a conseguir un script, en concreto este:

http://www.gimpusers.de/dl/batch-resize-2.4.scm

Pero no me funcionaba bien, y en el propio foro he podido ver la correción que si funcionaba, que paso a pegar a continuación, para quien la quiera:

(define (script-fu-batch-scale-ratio globexp ratio)
  (define (resize-img n f)
   (let* ((fname (car f))
          (img (car (gimp-file-load 1 fname fname))))
       (let* (
             (drawable   (car (gimp-image-active-drawable img)))
             (cur-width  (car (gimp-image-width img)))
             (cur-height (car (gimp-image-height img)))
          (new-width  (* ratio cur-width))
          (new-height (* ratio cur-height))
             (new_ratio      (min (/ new-width cur-width)
                                         (/ new-height cur-height)))
             (width      (* new_ratio cur-width))
             (height     (* new_ratio cur-height))
          )

         (gimp-image-undo-disable img)
         (gimp-image-scale img width height)
         (gimp-file-save 1 img (car (gimp-image-get-active-drawable img))
                                        fname fname)
         (gimp-image-delete img)
      )
    )
    (if (= n 1) 1 (resize-img (- n 1) (cdr f)))
  )
  (let* ((files (file-glob globexp 0)))
     (resize-img (car files) (car (cdr files))))
)

(script-fu-register "script-fu-batch-scale-ratio"
          _"Batch Image Scale By Ratio"
          "Hey!"
          "Nicholas Herring and Richard Hirner (http://www.gimptalk.com/
           forum/topic/Script-fu-Batch-Resi-e-9440-1.html) & ADP (http:
           //www.adp-gmbh.ch/misc/tools/script_fu/ex_10.html), hello_
           earth"
          "2008, Nicholas Herring based on a script by Richard Hirner"
          "March 26, 2008"
          ""
          SF-STRING "Full path with wildcards" "C:\\Test\\*.jpg"
          SF-VALUE "Scaling ratio (min 0.01, max 1)" "0.50")
(script-fu-menu-register "script-fu-batch-scale-ratio"
          "/Xtns/Misc")

Luego este script, lo grabas en un archivo que se puede llamar también batch-resize-2.4.scm lo dejas caer en el directorio de share\gimp\2.0\scripts de tu gimp (en principio da igual en el sistema operativo que estés) y abres de nuevo tu Gimp, y ya lo debes de tener accesible en el menú de Misc (Miscelaneo).

Ahora ya puedes puedes seleccionar todas las imagenes de un directorio y escalarlas según un ratio, por ejemplo, si pones “0.50” las escalará a la mitad del tamaño. Espero que te sea tan útil como a mi.

Fichero para descarga: batch-resize-24.scm

Be Sociable, Share!

2 Responses to Escalado de imágenes en batch con Gimp

  1. Pablo dice:
    Mozilla Firefox 3.0.1 Fedora Linux

    Siento fastidiarte pero:

    for imagen in *.jpg;do convert -resize “50%x50%” $imagen RES$imagen;done

    Hace lo mismo ;)

    Convert viene con ImageMagick

  2. lmfuertes dice:
    Mozilla Firefox 3.0.1 Windows Vista

    No me fastidias hombre, pero eso ya lo sabía…, solo que el convert no es, por decirlo fino, multiplataforma, y en cambio, ese escript si funciona en varios sistemas operativos.

    Pero mira, me parece muy bien que lo añadas, pues a más de uno le puede ser muy útil, así que gracias por la aportación apañero ;)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Get Adobe Flash player