PDA

Ver la Versión Completa : automatizar varios cambios seguidos en una imagen



Ramonrafe
28/02/13, 01:05:34
Hola.

Saludos a tod@s, porque en este foro es mi primer mensaje, soy usuario principiante en Gimp y uso la versión 2.8 con una extensión que descargué (GIMP 2.8 Script-FUs).

A veces hago unos retoques en imágenes que constan de 3 ó 4 pasos. Con 1 imagen, ni se nota. Aunque, cuando quiero hacer ese proceso con 8 ó 10 imágenes, se me hace muy largo y aburrido.

¿Hay alguna forma de automatizar el proceso?. Por ejemplo, "grabar" el proceso (como un macro) y luego repetirlo con cada imagen sin tener que realizar "a mano" todos los pasos en cada imagen.

Gracias de antemano.

badana
28/02/13, 12:53:22
Sí, pero hay que pensar, je.
La otra opción es bucear en Google y, acompañado de la palabra "script", o "plugin", o incluso "acciones" poner lo que buscas y la coletilla "para GIMP", (p.ej.: "script para escalado en GIMP") con un poco de suerte te empezarán a aparecer enlaces, bastante en inglés, a algo que alguien se ha preocupado de crear y soltar en la red y que tal vez coincida con lo que buscas.
GIMP como tal no permite las "acciones" que podemos conocer de otros programas, como bien dices grabar el proceso. Lo que si que permite es introducir plugins para realizar esas acciones, pero para eso alguien las tiene que haber creado o bien tú, si se te da eso de la programación la puedes hacer. Por cierto su instalación una vez lo has encontrado es muy fácil, símplemente colocarlo en la carpeta correspondiente (la ruta la puedes encontrar en "Preferencias" - "Carpetas"...)

Ramonrafe
28/02/13, 18:57:37
Gracias badana por contestar y aclarar el camino a seguir.

Creo que se me da un poco eso de programar.

¿Alguien conoce algún manual o guía de como programar un script en GIMP?, sobre todo si está en español, aunque quizás pudiera entender un poco si está en inglés.

Saludos.

P.D.: Acabo de hacer una búsqueda de "programar script gimp" con Google y me han salido varios enlaces (en español) donde se habla de como automatizar procesos en Gimp.

Con ello, creo que podré empezar a leer sobre ese tema y quizás llegue a hacer y/o adaptar un script, para que haga lo que busco.

josepvm
01/03/13, 16:12:37
Antes mira si te sirve un script ya programado.

Está muy bien el "David's batch processor": DBP - David's Batch Processor (http://members.ozemail.com.au/~hodsond/dbp.html)

Te permite aplicar de manera automatizada a una serie de imágenes todo un conjunto de operaciones comunes, como girar, difuminar, redimensionar, máscara de desenfoque, niveles automáticos, recortar, escoger el formato de salida, etc.

Ramonrafe
01/03/13, 20:36:55
Antes mira si te sirve un script ya programado.

Está muy bien el "David's batch processor": DBP - David's Batch Processor (http://members.ozemail.com.au/~hodsond/dbp.html)


Gracias por tu comentario, josepvm.

Ya he probado el "David's batch processor", aunque no lo hice "a fondo", pero creo que no me permitirá hacer lo que busco. Quizás sí, pero me dió la impresión de que no.

De cualquier manera, estuve mirando una guía de la programación básica de Scheme (el lenguaje de programación que se usa para crear los script) y me ha parecido bastante interesante y asequible (lo esperaba más complicado e incomprensible). Así que voy a dedicarle un poco de energía a Scheme a ver si logro avanzar con él.

De hecho, creo que si logro manejar mínimamente Scheme (por la potencia y posibilidades que ofrece), avanzaré mucho más que lo que conseguiría usando una herramienta de uso general, como el "David's batch processor".

Saludos.

P.D.: Por cierto, la guía de la programación básica de Scheme que he leido, está en las ayudas de GIMP. No hay que buscar demasiado. Está en español completamente y la ví en http://docs.gimp.org/es/ . También hay más en http://www.gimp.org.es/modules/downloadse/viewcat.php?cid=15

josepvm
01/03/13, 21:22:55
También puedes programar scripts para Gimp usando Python, que es un lenguaje de estilo más moderno.

Scheme tiene como ventaja que está integrado en todas las versiones de Gimp, para cualquier plataforma. Pero es un derivado de LISP, que tiene una sintaxis que se aparta bastante de la de los lenguajes actuales. Se dice, en tono irónico, que LISP significa "Lots of Irritating Stupid Parentheses". Pero si te acostumbras a él, seguro que te sirve.

Python se ha ido incorporando a GIMP a partir de la versión 2.4. En Linux ya viene integrado siempre de manera fácil. En Windows, hasta la versión 2.6 se requeria algo más de trabajo para instalar el lenguaje en el sistema operativo. Pero la versión 2.8 ya lo lleva incorporado.


GIMP, además de los scripts en Scheme o Python, también admite "plug-ins" escritos en lenguaje C. Eso se suele usar cuando es importante la velocidad, para realizar operaciones de cálculo intensivo sobre la imagen.

Ramonrafe
01/03/13, 21:56:14
También puedes programar scripts para Gimp usando Python, que es un lenguaje de estilo más moderno.

Scheme tiene como ventaja que está integrado en todas las versiones de Gimp, para cualquier plataforma. Pero es un derivado de LISP, que tiene una sintaxis que se aparta bastante de la de los lenguajes actuales. Se dice, en tono irónico, que LISP significa "Lots of Irritating Stupid Parentheses". Pero si te acostumbras a él, seguro que te sirve.

Python se ha ido incorporando a GIMP a partir de la versión 2.4. En Linux ya viene integrado de manera fácil, pero si trabajas con Windows puede costar algo más de trabajo instalar el lenguaje en el sistema operativo.


Precisamente, por lo antíguo de Scheme, intenté encontrar un manual de Python para GIMP en español, pero no lo logré y, en un foro que hablaban de uno, el enlace estaba roto.

De cualquier manera, ni conozco Scheme (bueno, ahora un poco), ni conozco Python. Pero he encontrado mucha más información (para GIMP, claro) de Scheme y, por ello, voy a meterme con él.

Aunque posiblemente sea dudoso que en el futuro se siga con él en GIMP. Posiblemente sea sustituido por Python o C/C++, que son más modernos y populares.

Ramonrafe
02/03/13, 23:25:32
Bueno, después de echarle varias horas y contra todo pronóstico o esperanza, he logrado montar un script que combina los 2 que usaba "a mano" y añadiendo un par de retoques finales que suelo hacer a las imágenes.

Por supuesto, apenas he hecho algo de programación. Más bien he cortado y pegado y, en algunos casos modificar y/o añadir un par de líneas de programación.

El script se llama "drawing-44". Si se instala (lo probé en Gimp 2.8.2) se accede desde los menús: Script-Fu - Sketch - Drawing-44
Aclaración: Hace falta tener instalada una ampliación de los script de Script-FU. Se pueden descargar desde aquí: scripts that work in gimp 2.8 (http://www.gimphelp.org/script28.shtml#downloads) .

El script completo lo incluyo aquí:

;================================================= ==============

; FU_sketch_sketch-drawing-44.scm
; Probado con / Tested with: GIMP 2.8.2
; 2-3-2013 / March 2, 2013

; ESPAÑOL
;--------------
; Este guion combina los guiones:
;
; - FU_contrast_auto-contrast.scm last modified/tested by Paul Sherman
; - FU_sketch_sketch-drawing.scm Copyright (C) 2007 Eddy Verlinden <eddy_verlinden@hotmail.com>
;
; El mérito del mismo es de esos dos autores.
; Se han añadido algunas líneas para realizar unos retoques finales.

;Después de ejecutar Drawing-44, usted puede deshacer la mitad del proceso para realizar cambios manualmente, al pulsar "Ctrl+z".
;Si quiere deshacer todo el proceso, debe pulsar 2 veces "Ctrl+z".


; ENGLISH
;--------------
;This script combines the scripts:
;
; - FU_contrast_auto-contrast.scm last modified/tested by Paul Sherman
; - FU_sketch_sketch-drawing.scm Copyright (C) 2007 Eddy Verlinden <eddy_verlinden@hotmail.com>
;
;The merit of it is from these two authors.
;Added some lines for some finishing touches.

;After running Drawing-44, you can undo the middle of the process to make changes manually, pressing "Ctrl + z".
;If you want to undo the whole process, you must press 2 times "Ctrl + z".

;-----------------------------------------------------------------------------------------------


(define (FU-drawing-44
img
drawable
thickness
)

(gimp-image-undo-group-start img)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; Create a new layer
(define value-layer (car (gimp-layer-copy drawable 0)))

; Give it a name
(gimp-item-set-name value-layer "Auto Contrast")

; Add the new layer to the image
(gimp-image-insert-layer img value-layer 0 0)

; Set opacity to 100%
(gimp-layer-set-opacity value-layer 100)

; Set the layer mode to Value
(gimp-layer-set-mode value-layer 14)

; Adjust contrast
(gimp-levels-stretch value-layer)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(let* (
(width (car (gimp-drawable-width drawable)))
(height (car (gimp-drawable-height drawable)))
(old-selection (car (gimp-selection-save img)))
(thf (* height 0.005 thickness ))
(image-type (car (gimp-image-base-type img)))
(layer-type (car (gimp-drawable-type drawable)))
(layer-temp1 (car (gimp-layer-new img width height layer-type "temp1" 100 NORMAL-MODE)))
(layer-temp2 (car (gimp-layer-new img width height layer-type "temp2" 100 NORMAL-MODE)))
)

(if (eqv? (car (gimp-selection-is-empty img)) TRUE)
(gimp-drawable-fill old-selection WHITE-IMAGE-FILL)) ; so Empty and All are the same.
(gimp-selection-none img)
(gimp-image-insert-layer img layer-temp1 0 -1)
(gimp-image-insert-layer img layer-temp2 0 -1)
(gimp-edit-copy drawable)
(gimp-floating-sel-anchor (car (gimp-edit-paste layer-temp1 0)))

(if (eqv? (car (gimp-drawable-is-gray drawable)) FALSE)
(gimp-desaturate layer-temp1))
(gimp-edit-copy layer-temp1)
(gimp-floating-sel-anchor (car (gimp-edit-paste layer-temp2 0)))
(gimp-invert layer-temp2)
(plug-in-gauss 1 img layer-temp2 thf thf 0)
(gimp-layer-set-mode layer-temp2 16)
(gimp-image-merge-down img layer-temp2 0)
(set! layer-temp1 (car (gimp-image-get-active-layer img)))
(gimp-levels layer-temp1 0 215 235 1.0 0 255)

(gimp-image-select-item img CHANNEL-OP-REPLACE old-selection)
(gimp-selection-invert img)
(if (eqv? (car (gimp-selection-is-empty img)) FALSE) ; both Empty and All are denied
(begin
(gimp-edit-clear layer-temp1)
))

;;;;;;;;;;;;; Añadido / Added ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; ESPAÑOL - Opacidad de la capa: 45%
; ENGLISH - Set opacity to 45%
(gimp-layer-set-opacity layer-temp1 45)

; ESPAÑOL - Modo de Capa: Valor
; ENGLISH - Set the layer mode to Value
(gimp-layer-set-mode layer-temp1 14)

; ESPAÑOL - Dar nombre a la capa
; ENGLISH - Give the layer a name
(gimp-item-set-name layer-temp1 "Drawing + 45% opacidad/opacity + Modo Valor/Mode Value")

; ESPAÑOL - Punto de control de deshacer
; ENGLISH - Undo control point
(gimp-image-undo-group-end img)
(gimp-image-undo-group-start img)

; ESPAÑOL - Dar nombre a la capa
; ENGLISH - Give the layer a name
(gimp-item-set-name value-layer "Drawing-44")

; ESPAÑOL - Combina capa hacia abajo
; ENGLISH - Merge layer down
(gimp-image-merge-down img layer-temp1 0)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;


(gimp-image-select-item img CHANNEL-OP-REPLACE old-selection)
(gimp-image-remove-channel img old-selection)


(gimp-image-undo-group-end img)
(gimp-displays-flush)
)
)

(script-fu-register
"FU-drawing-44"
"<Image>/Script-Fu/Sketch/Drawing-44"
"Creates a drawing.\n\nThis version lets you adjust the line thickness."
"Eddy Verlinden <eddy_verlinden@hotmail.com> and Paul Sherman"
"Eddy Verlinden and Paul Sherman"
"2013"
"RGB* GRAY*"
SF-IMAGE "Image" 0
SF-DRAWABLE "Drawable" 0
SF-ADJUSTMENT "thickness" '(2 1 5 1 1 0 0)

)


;================================================= ==============

Se debe grabar con el nombre: FU_sketch_sketch-drawing-44.scm

Debe grabarse en la carpeta "scripts" (donde ya hay otros archivos con extensión ".scm") y, tras iniciar GIMP, queda activo.

Este script combina Auto-Contrast (Script-Fu - Contrast) y Drawing (Script-Fu - Sketch). Pero evita la ventana que aparece con Auto-Contrast (aunque sí aparecerá la ventana de Drawing) y realiza todo el proceso en 1 solo paso. Además, al final, se cambia la Opacidad y el Modo de Capa de la capa que queda tras Drawing y Combina Hacia Abajo esa capa con la capa que quedó de Auto-Contrast.

Después de ejecutar Drawing-44, se puede deshacer la mitad del proceso para realizar cambios manualmente, al pulsar "Ctrl+z". Si se quiere deshacer todo el proceso, se debe pulsar 2 veces "Ctrl+z".

Una vez que se activa Drawing-44, una ventana nos pide el valor del ancho que se le darán a unas líneas en la imagen final. Eso es la primera vez. Pero para las siguientes veces que se quiera aplicar a otras imágenes, basta con pulsar "Ctrl + F" y se realiza el proceso directamente (con el ancho que se introdujo la primera vez). En el caso de que ese ancho se quiera modificar, basta con pulsar "Mayúsculas + Ctrl + F" y volverá a aparecer la ventana pidiéndonos el grosor.

Espero que te sea útil.

Saludos.