Efecto pintura al óleo con ImageMagick

ImageMagick cuenta con algunos filtros que realizan efectos artísticos. No llega al nivel de espectacularidad de G’MIC, pero genera resultados llamativos. Uno de esos filtros es el que vamos a ver a continuación: -paint, que emula una pintura al óleo a partir de una imagen dada.

Como lo que realiza -paint es una agrupación de pixeles, si la imagen tiene pocos colores o pocas figuras, no conseguiremos el efecto.

Vamos crear una imagen con tres franjas, roja, verde y azul:

$ convert -size 800x150 xc:red xc:green xc:blue -append rgb.jpg

 

Y ahora vamos a darle un valor altísimo, por ejemplo de 100:

$ convert rgb.jpg -paint 100 rgb_paint.jpg

$ convert rgb.jpg -paint 100 rgb_paint.jpg

Ni siquiera un valor tan alto como 100 ha generado una distorsión en unos píxeles tan agrupados y tan iguales.

Para ver el efecto de paint, vamos a ver una fotografía con cambios de color:


Y empezaremos viendo una curiosidad, que  es que le podemos aplicar un valor negrativo, pero siempre devuelve el mismo resultado, independientemente del valor aplicado:

convert puertadealcala.jpg -paint -1 puertadealcala-1.jpg

convert puertadelsol.jpg -paint -1 puertadelsol-1.jpg

convert puertadealcala.jpg -paint -100 puertadealcala-100.jpg

Para usar el efecto -paint, suele ser más elegante con valores bajos, entre 1 y 10, más o menos, y en función tanto de la imagen original como del resultado que busquemos.

convert puertadealcala.jpg -paint 1 puertadealcala_1.jpg

convert puertadelsol.jpg -paint 1 puertadelsol_1.jpg

convert puertadealcala.jpg -paint 5 puertadealcala_5.jpg

convert puertadelsol.jpg -paint 5 puertadelsol_5.jpg

convert puertadealcala.jpg -paint 10 puertadealcala_10.jpg

 

convert puertadelsol.jpg -paint 10 puertadelsol_10.jpg

Con valores muy altos, los resultados son excesivamente distintos a la imagen original.

convert puertadealcala.jpg -paint 50 puertadealcala_50.jpg

 

convert puertadealcala.jpg -paint 50 puertadealcala_50.jpg

 

Como con cualquier otro efecto de ImageMagick, también podemos hacer animaciones:

#!/bin/bash

for i in 1
do
    for x in {0..9}
    do 
        for z in 1 2 3
        do
            convert $1 -paint $x png:-
        done
    done
    for y in {10..1..-1}
    do
        for z in 1 2 3
        do
            convert $1 -paint $y png:-
        done
    done
done | ffmpeg -f image2pipe -i - ${1%%.*}.gif

Deja una respuesta

Tu dirección de correo electrónico no será publicada.