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-fx
operador. La fórmula i/w
repasa cada píxel para i
= 0 al ancho w
de 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 multiply
de 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.