viernes, 24 de abril de 2015

Ghost Effect con la programación script de GIMP (script-fu)

Para GIMP se pueden hacer scripts que automaticen tareas que se hacen desde la interfaz gráfica. Por ejemplo, el siguiente script esta hecho para correr desde bash. Lo que hace es tomar un conjunto de imágenes que representan una secuencia animada y tomando una imagen como fondo transparenta el conjunto imagenes animadas sobre dicho fondo, creando lo que se conoce como un ghost effect. Las imagenes que se utilizen para ello deberán haberse tomado previamente sin mover la cámara y utilizando una imagen como fondo en un escenario vacio y sin nada animado, que este en la misma posición en la cuál se toman la secuencia de imagenes animadas. De otra forma lo que se obtendra es un revoltijo.

#!/bin/bash
# Script para crear animaciones que trabaja con dos capas
# - Una en la que hay un fondo estático
# - Y otra de la animación la cual se transparenta contra el fondo
# El resultado es aspecto fantasmal de la imagen animada.
# Tanto el fondo estático como la capa animada deben tomarse en la misma posición y sin mover la cámara

{
cat <<EOF
(define (crea-transparencia imagen_fondo imagen_animacion imagen_salidad)
  (let* (
     (image (car (gimp-file-load RUN-NONINTERACTIVE imagen_fondo imagen_fondo)))
     (layer nil)
         (drawable nil)
     )

    (set! layer (car (gimp-file-load-layer RUN-NONINTERACTIVE image imagen_animacion)))
   

    (gimp-image-add-layer image layer 0 )
    (gimp-layer-set-opacity layer 25)
    (set! drawable (car (gimp-image-merge-visible-layers image EXPAND-AS-NECESSARY)))
    (file-jpeg-save RUN-NONINTERACTIVE image drawable imagen_salidad imagen_salidad 1 0 0 0 " " 0 1 0 1)
    (gimp-image-delete image) ; ... o la memoria explotara
    )
  )

(gimp-message-set-handler 1) ; Messages to standard output
EOF

imagen_fondo="../00554/0531.jpg"

for i in ../00554/*.jpg; do
  imagen_salidad=`echo $i | cut -d '/' -f 3`
  echo "(gimp-message \"$i\")"
  echo "(crea-transparencia \"$imagen_fondo\" \"$i\" \"$imagen_salidad\")"
done

echo "(gimp-quit 0)"
} | gimp -i -b -


Este es un ejemplo de un video que desarrolle para un proyecto en la universidad hace un tiempo:


No hay comentarios:

Publicar un comentario