Mi primer Script-Fu para GIMP

Tamaño de letra:

Crear un script para GIMP paso a paso

Una de las características más poderosas que podemos utilizar en el editor GIMP, es el uso de scripts. Como en cualquier otro programa, el uso de scripts nos permite realizar diversas tareas de forma automática y esto es una enorme ventaja. Imagina que en cada imagen que vas a usar en tu web quieres añadir una marca de agua con un texto cualquiera. Para hacer esto en GIMP se podrían, por ejemplo, seguir estos pasos:

  • Crear una nueva capa de texto
  • Escribir el texto
  • Cambiar el color
  • Ponerlo en negrita
  • Cambiar la fuente
  • Cambiar el tamaño
  • Colocarlo en la esquina inferior derecha
  • Cambiar la opacidad

Todo este proceso se podría automatizar con un solo click: creando -por ejemplo- un script que haga todas esas operaciones.

Script-Fu, TinyScheme, GIMP PDB

De Scheme a TinyScheme

Como puedes ver en la web oficial de GIMP, a partir de la versión 1.0 de GIMP, se incluyó la posibilidad de utilizar un potente lenguaje de script (llamado Script-Fu) basado en Scheme y la implementación de un intérprete (SIOD) escrito por George J. Carrette. El intérprete Script-Fu, basado en el de SIOD de George J. Carrette, ha servido para realizar miles de scripts. Es un lenguaje un poco peculiar (Scheme está basado en Lisp y sus expresiones están entre paréntesis), aunque pienso que no es difícil aprenderlo. A partir de la versión 2.4 de GIMP se decidió utilizar un intérprete más moderno denominado TinyScheme que tiene algunas diferencias y si utilizas código antiguo posiblemente recibirás errores, por ejemplo si usas variables no declaradas.

Para "abrir boca" hoy vamos a hacer un muy, muy, muy sencillo ejemplo simplemente para ver su funcionamiento y que te oriente a la hora de fabricarte los tuyos propios.

Como es posible ver el código de los scripts, puedes descargarte ejemplos y estudiarlos para ver cómo han sido estructurados, te quedarás sorprendido de lo que se puede llegar a hacer.

Script-Fu

Cuando una función ha sido escrita, es necesario registrarla con Script-Fu antes de usarla. Hay que darle un nombre, una selección de parámetros y registrarla en la PDB para que sea llamada por cualquier otro script o plugin.

GIMP PDB

Todas las funciones de GIMP están disponibles en la base de datos de procedimientos. Se puede acceder a esta desde el menú Ayuda ? Visor de procedimientos.

Creando mi primer script

Será muy muy sencillo. Este script te permitirá escribir un texto y lo pondrá en la esquina superior izquierda de tu imagen. Todo comentario en el código va precedido de punto y coma (;). Crea un archivo vacío.

Código

Para registrarlo, al script hay que pasarle 7 parámetros:

  1. El nombre de la función
  2. El nombre que se usará en el menú de GIMP para ejecutarlo.
  3. Una descripción que quieras hacer de tu script
  4. Autor
  5. Derechos de copia
  6. Fecha del script
  7. Lista de tipos de imágenes válidas para el script

Después de esos 7 parámetros hay que añadir otros que son requeridos por el plugin. En este caso solamente SF-STRING y SF-IMAGE. Escribe lo siguiente en tu archivo:

 
;Dicho código se puede usar bajo la licencia...
;Creado por karmany como sencillo ejemplo de script
;Dicho script crea un texto en la esquina superior izquierda a
;10 x 10 píxeles y de 20 píxeles de tamaño.
;-------------------------------------------------------------
(script-fu-register
  "script-fu-texto-arriba-izquierda"                 ;1.- Nombre de la función
  "<Image>/Script-Fu/Texto arriba a la izquierda"    ;2.- Nombre en el menu
  "Crea un texto,\
    en la esquina superior izquierda."               ;3.- Descripción
  "karmany"                                          ;4.- Autor
  "copyright 2013, karmany;\
    2013, the GIMP Documentation"                    ;5.- Copyright
  "23 de enero de 2013"                              ;6.- Fecha del script
  ""                                                 ;7.- Lista tipos de imágenes
SF-IMAGE  "Imagen"  0   
SF-STRING "Text" "karmany.NET"                       ;Texto marca de agua
  )
 

Ahora vamos a generar el código. Voy a utilizar la función gimp-text-fontname y si observas en el visor de procedimientos, requiere una serie de parámetros:

  1. Le pasaré como parámetro la imagen definida en la función principal.
  2. Creará el texto en una nueva capa: -1
  3. X. Coordenada x desde la izquierda: 10
  4. Y. Coordenada y desde arriba: 10
  5. Texto codificado en UTF-8: karmany.NET
  6. Borde. Tamaño del borde: 0
  7. Suavizado: TRUE
  8. Tamaño: 20
  9. Unidad de tamaño: PIXELS
  10. Nombre de la fuente: Arial.

Este código va seguido al anterior, en el mismo archivo que has creado:

 
(define (script-fu-texto-arriba-izquierda imagen texto)
  (let*
    (
      (texto-marca (car (gimp-text-fontname imagen -1 10 10 texto 0 TRUE 20 PIXELS "Arial")))
    )   
  )
)
 

El código completo que debes tener es el siguiente:

 
;Dicho código se puede usar bajo la licencia...
;Creado por karmany como sencillo ejemplo de script
;Dicho script crea un texto en la esquina superior izquierda a
;10 x 10 píxeles y de 20 píxeles de tamaño.
;-------------------------------------------------------------
(script-fu-register
  "script-fu-texto-arriba-izquierda"                 ;1.- Nombre de la función
  "<Image>/Script-Fu/Texto arriba a la izquierda"    ;2.- Nombre en el menu
  "Crea un texto,\
    en la esquina superior izquierda."               ;3.- Descripción
  "karmany"                                          ;4.- Autor
  "copyright 2013, karmany;\
    2013, the GIMP Documentation"                    ;5.- Copyright
  "23 de enero de 2013"                              ;6.- Fecha del script
  ""                                                 ;7.- Lista tipos de imágenes
SF-IMAGE  "Imagen"  0   
SF-STRING "Text" "karmany.NET"                       ;Texto marca de agua
  )
 
(define (script-fu-texto-arriba-izquierda imagen texto)
  (let*
    (
      (texto-marca (car (gimp-text-fontname imagen -1 10 10 texto 0 TRUE 20 PIXELS "Arial")))
    )   
  )
)
 

Comprobando el funcionamiento

Creando un simple ejemplo

Abre GIMP, crea una imagen de 300 x 300 píxeles y de color de fondo: azul.

Registrando el script

Para registrarlo y comprobar el funcionamiento (del script) hay que dejarlo en un lugar específico de GIMP. La ruta de los scripts en GIMP la puedes modificar o ver desde el menú: Editar? Preferencias ? Carpetas ? Guiones. Una de las rutas que tengo por defecto es esta:

C:\Users\karmany\.gimp-2.8\scripts

Así que en ese directorio voy a guardar mi primer script y le voy a poner extensión scm (guarda ahí el archivo creado). Como tengo GIMP abierto tendré que "refrescar" los scripts desde el menú: Filtros? Script-Fu ? Refrescar y automáticamente en el menú Script-Fu deberá aparecer tu primer script: "Texto arriba a la izquierda":

Script-Fu, texto arriba a la izquierda

Y si ahora pulsas en él (he cambiado antes el color de frente a blanco), aparecerá la siguiente pantalla mostrando el texto que quieres añadir:

Script-Fu, ejemplo script

Y el resultado final es el siguiente:

GIMP capa fondo y capa texto

Desde mi punto de vista, programar bien los scripts lleva algo de trabajo pero una vez que ya te has iniciado, puedes llegar a automatizar tareas muy complejas que te ahorrarán muchísimo trabajo. Además ya te he explicado donde se guardan los scripts, hay miles hechos (aquí tienes un proyecto de más de 100 scripts compatibles con GIMP 2.8 pero no optimizados), ahora ya sabes cómo hacerlos funcionar, modificarlos y disfrutar de esta poderosa característica.

Última actualización: Miércoles, 30 Enero 2013

No tiene privilegios para responder a los comentarios.


 
Visitas: 8486520