converter do imagemagick mudando inesperadamente a cor de fundo

3

O que eu estou tentando alcançar é puxar um gráfico simples de um servidor web e usar imagemagick para mudar algumas cores para que eu possa usar esta imagem ainda mais.

Esta é a parte do imagemagick:

convert traffic.png -transparent "rgb(240,240,240)" traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque black traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,200,0)" traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,130,0)" traffic2.png
convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(150,150,255)" traffic2.png
# convert traffic2.png -fill "rgb(200,200,200)" -opaque "rgb(0,0,255)" traffic2.png

O problema que estou tendo é com a linha atualmente comentada. O que devo fazer na minha opinião é alterar todas as ocorrências desse azul para o mesmo cinza especificado, o que ele também faz, mas assim que essa linha é executada, o fundo anteriormente transparente também se transforma em uma cor sólida. Vendo como a sintaxe é a mesma, eu realmente não sei porque isso está acontecendo. Ele funciona muito bem quando eu tento esses comandos na minha máquina local (OS X), mas sob o Debian no meu Raspberry Pi, algo parece atrapalhar.

    
por Kilian Koeltzsch 19.07.2013 / 02:27

1 resposta

2

Acho que o seu problema é o que discutimos nos comentários da sua pergunta, especificamente uma alteração feita entre o IM 6.6.X e o 6.7+. Seus comandos funcionaram para mim no Fedora 14 e no CentOS 5 & 6, mas não no Ubuntu 12.10.

  • F14 (6.6.4-1 2011-11-03 Q16) - trabalhado
  • CentOS 6 (6.5.4-7 2012-05-07 Q16) - trabalhado
  • O Ubuntu 12.10 (6.7.7-10 2012-08-17 Q16) não funcionou

Encontrei este bit na documentação do IM, intitulada: ImageMagick v6 Examples -  Noções Básicas de Cores e Canais . Esta sinopse é o que chamou minha atenção na seção: "Substituindo cores nas imagens":

However as of IM v6.2.7, this operator is limited by the "-channel" setting. As such, to convert a color (say blue) to transparency, you will need to specify a "-channel" to include the alpha channel to make colors transparent. You will also need to ensure the image has a 'matte' or alpha channel enabled, to hold the transparency information.

Com essa nova informação, converti seu 6º comando para este:

$ convert traffic2.png -transparent "rgb(0,0,255)" traffic2.png

E parece ter funcionado. O OP confirmou que isso resolveu seu problema!

comando antigo

novocomando

    
por 20.07.2013 / 19:43