ImageMagick: PNG para GIF: torna qualquer pixel não completamente transparente

3

Estou tentando criar uma animação GIF a partir de um conjunto de imagens PNG transparentes em várias resoluções. Quando eu -resize as bordas estão com alias. O plano de fundo é provavelmente bastante previsível para que eu pudesse torná-lo apenas uma cor sólida, mas, se possível, quero algo melhor: quero que todos os pixels sejam semitransparentes se a imagem de saída for PNG sólida com branco como plano de fundo.

Existe alguma combinação de opções para o ImageMagick que me permite fazer isso? Meu comando atualmente parece assim:

for size in 28 42 56 84 112; do
    echo $size
    convert -delay 6 -dispose previous {0007..0145}.png -resize ${size}x${size} -coalesce -layers OptimizeFrame scotch_${size}_short.gif
done

É assim que as imagens parecem agora:

Veja as bordas irregulares das versões menores.

Por que não apenas deixo o plano de fundo sólido? Ele será usado no Twitch como um emoticon de alegria. Lá, o plano de fundo do local onde ele será exibido é #FFFFFF , mas, quem sabe, pode mudar. Então, eu gostaria que ele degradasse normalmente, então terá aliasing visível até que eu atualize o emote. (Note que há também um modo escuro, então eu tenho que fazer isso tudo duas vezes também para um fundo escuro, mas de alguma forma eu já entendi isso.)

    
por panzi 24.05.2017 / 03:20

0 respostas