imagemagickの変換が予期せず背景色を変更します。

imagemagickの変換が予期せず背景色を変更します。

私が達成したいのは、Webサーバーから単純なグラフィックをプルし、imagemagickを使用して画像をさらに使用できるようにいくつかの色を変更することです。

これは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

私が経験している問題は現在コメントされている行にあります。私が見るには青のすべての項目を指定された同じグレーに変更するようですが、一度この行が実行されると、以前透明であった背景も単色になります。構文が同じものを見ると、なぜこれが起こるのかわかりません。ローカルコンピュータ(OS X)でこのコマンドを試すとうまく動作しますが、Raspberry PiのDebianでは何かが邪魔になるようです。

答え1

あなたの問題は、あなたの質問に対するコメント、特にIM 6.6.Xと6.7+の間の変更で私たちが議論したものと同じです。あなたのコマンドはFedora 14とCentOS 5と6では動作しますが、Ubuntu 12.10では動作しません。

  • F14 (6.6.4-1 2011-11-03 Q16) - 有効
  • CentOS 6(6.5.4-7 2012-05-07 Q16) - 有効
  • Ubuntu 12.10(6.7.7-10 2012-08-17 Q16)が機能しません。

私は次のタイトルのIMドキュメントでこれを見つけました:ImageMagick v6 はい - 色の基本とチャンネル。この紹介は「画像の色を変える」セクションで私の注目を集めました。

ただし、IM v6.2.7以降、この演算子は「-channel」設定に制限されています。したがって、色(青など)を透明度に変換するには、色を透明にするアルファチャンネルを含む「チャンネル」を指定する必要があります。また、透明度情報を保存するには、画像でマスクまたはアルファチャンネルが有効になっていることを確認する必要があります。

この新しい情報を使用して、6番目のコマンドを次のように変換しました。

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

これがうまくいったようです。 OPはこれが彼の問題を解決したことを確認しました!

前のコマンド

         アクセスできないss2.png

新しいコマンド

         交通良い ss2.png

関連情報