¿Cómo aplicar un degradado a una imagen en ImageMagick?

¿Cómo aplicar un degradado a una imagen en ImageMagick?

Tengo una imagen y quiero aclararla en la parte superior y desvanecerla sin efecto en la parte inferior. Entonces, si la imagen era de un verde sólido al principio, al final se vería como un degradado de verde claro a verde.

Pensé que podría hacer algo como esto (colocando un bloque blanco sobre la parte superior de la imagen usando un degradado como máscara):

convert a.jpg \( +clone -fill white \) \
      \( +clone gradient:white-black  \) \
      -composite out.jpg

O esto ('colorear' una imagen con un degradado que se vuelve transparente)

convert a.jpg \( +clone 'gradient:black-rgba(0,0,0,0)' \) \
        -colorize 50% out.jpg

...pero ninguno funciona.

Respuesta1

convert a.jpg \( +clone -fx 'i/w' \) -compose multiply -composite out.jpg

Esto tomará una copia de la imagen y aplicará el-fxoperador. La fórmula i/wrepasa cada píxel para i= 0 al ancho wde modo que a la izquierda ( i == 0) la salida sea cero (negro) y a la derecha ( i == w) la salida sea uno (blanco).

Luego compóngalo multiplyde modo que se desvanezca del negro puro en el lado izquierdo al original puro en el borde más derecho.

También puedes hacer cosas como esta:

convert a.jpg \( +clone \
  -fx 'i/w < 0.2 ? 0.2 : (i/w -0.2)*4 + 0.2' \
  \) -compose multiply -composite output.jpg

Lo que oscurecerá el 20% izquierdo de la imagen en un 80%, luego desde el 40% de la izquierda no tiene ningún efecto y entre el 20% y el 40% se desvanece linealmente.

información relacionada