Como aplicar um gradiente a uma imagem no ImageMagick?

0

Eu tenho uma imagem e quero torná-la mais clara no topo, sem efeito na parte inferior. Então, se a imagem fosse um sólido verde para começar, no final pareceria um gradiente de verde-claro a verde.

Eu pensei que poderia fazer algo assim (copiando um bloco branco no topo da imagem usando um gradiente como máscara):

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

Ou isso ('colorir' uma imagem com um gradiente que se torna transparente)

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

... mas não funciona.

    
por artfulrobot 21.09.2016 / 13:49

1 resposta

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

Isso levará uma cópia da imagem e aplicará o % operador de-fx . O fórumla i/w ultrapassa todos os pixels de i = 0 até a largura w de tal forma que à esquerda ( i == 0 ) a saída é zero (preto) e à direita ( i == w ) a saída é uma (branco).

Em seguida, componha com multiply para que ele desvanece do preto puro no lado esquerdo para o original puro na borda mais à direita.

Você também pode fazer coisas assim:

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

Qual escurecerá a esquerda 20% da imagem por 80%, então de 40% da esquerda não terá efeito e entre 20% e 40% se desvanecerá linearmente.

    
por 12.10.2016 / 13:31