Cambiar un color con ImageMagick
Cambiar un color por otro en ImageMagick es sumamente fácil cuando es un color sólido. Pero incluso cuando no es un color sólido, podemos definir el porcentaje de ese color que queremos modificar.
Vamos a crear una imagen con franjas y bordes de distintos colores:
convert -size 100x145 xc:yellow -bordercolor blue -border 50 -bordercolor red -border 50 -bordercolor green -border 50 -bordercolor white -border 100x0 -bordercolor black -border 100x0 recuadros.jpg
Ahora podemos cambiar cualquiera de los colores. Lo haremos indicando -fuzz $porcentaje% con la distancia de color; el nuevo color con -fill $color_nuevo, con el que vamos a sustituir al antiguo y con -opaque $color_original el color a sustituir:
convert recuadros.jpg -fuzz 10% -fill black -opaque red sinrojo.jpg
Podemos cambiar más de un color a la vez:
convert recuadros.jpg -fuzz 10% -fill black -opaque red -opaque yellow sin_rojo_ni_amarillo.jpg
O varios cambios de color en la misma instrucción:
convert recuadros.jpg -fuzz 10% -fill black -opaque red -opaque yellow -fuzz 10% -fill red -opaque green sin_rojo_ni_amarillo_verde_por_rojo.jpg
Si lo que queremos es cambiar un color por otro, lo que tendremos que hacer es jugar con un color intermedio. Por ejemplo, convertir el negro en morado, el rojo en negro y el morado en rojo. En ningún momento aparecerá el morado en la imagen resultante, pero es un paso intermedio necesario para poder invertir los colores sin tener que generar una imagen temporal:
convert recuadros.jpg -fuzz 10% -fill purple -opaque black -fuzz 10% -fill black -opaque red -fuzz 10% -fill red -opaque purple rojo_por_negro.jpg
Pingback: Vídeo fundido a negro a partir de una imagen con el operador -opaque de ImageMagick – Linux en Español