UNIXシェルでグレースケールイメージをアルファチャネルイメージに変換する


14

グレースケール画像があります。(元の画像の)黒のピクセルが完全に不透明になり、白のピクセルが完全に透明になり、50%のグレーピクセルが50%に透明になるように、すべてのシェードで透明なPNGに変換したい間に。

どうすればこれを達成できますか?

(はい、私はこれがほぼ同じ質問であることを知っていますグレースケールシェードをアルファチャネルに変換コマンドラインツール(ImageMagickやNetPBMなど)のみを使用してこれ行う方法を知りたいです。)

上記の質問の結果の例を次に示します。このサンプルは、コマンドラインツールのみを使用して達成したい結果です。

サンプル

このPNGを透明度をサポートするビューアーで開くと、私が言っていることがわかります。

回答:


18

大丈夫。たくさんのグーグル検索を行い、ImageMagickのマニュアルを実際に読んでいるうちに読んでみたところ、答えは次のとおりです。というグレースケール画像があるとしますsource.png、ここに私のコマンドがあります。

作るためにmakeが黒画素透明、彼らがそうであるように白画素を保持し、次のコマンドを実行します。

 convert source.png -alpha copy -fx '#fff' result.png

代わりに、黒のままで白いピクセルを透明にするには、次を使用します。

 convert source.png -alpha copy -channel alpha -negate +channel -fx '#000' result.png

最後のコマンドについてもう少し詳しく説明しましょう。

  • convert – ImageMagicコマンド(いくつかのいずれか)
  • source.png –グレースケールのソース画像。
  • -alpha copy –前のファイルの内容をアルファチャネルにコピーします。
  • -channel alpha –次の演算子のみがアルファチャネルに影響するように指定します。
  • -negate –アルファチャネルを反転します(以前の -chanel alphaの画像が画像の他の部分に影響を与えない)。
  • +channel–次の演算子のみがカラーチャンネルに影響を与え、アルファチャンネルは変更しないように指定します。(これはデフォルトであるため、最初の簡単な例では指定する必要はありません。)
  • -fx '#000'–カラーチャンネルの内容を黒のピクセルに置き換えます。(+channelアルファチャネルは影響を受けないため)。

その最終を含めることは非常に重要です -fxオプション。そうしないと、生成された画像のすべての半透明ピクセルが色を保持します。(これらのピクセルは半透明なので、明らかではないかもしれませんが、最終結果は期待したものではありません。)

ImageMagickオプションのリストは非常に便利だと思いました。


画像を実際のグレースケール画像よりも暗くする2番目のコマンドを使用している場合、目標を達成するためのかなり良い説明です。実際、その透明度以外のグレースケールにある同じ色調を達成するという私の目標は予想通りです。それを達成するためのアイデアはありますか?
ハーディクパテル14

それは非常に便利です、ありがとう!:)私は自分でそれを把握する必要がなかったことをうれしく思います
サムワトキンス

わたしは、あなたを愛しています!!!!!!
メスカラ

これらの種類のコメントは、おそらくこのチャンネルを通じて私に送信する方が良いでしょう:okcupid.com/profile/zrajm :)
zrajm

1
理由はわかりませんが、現在のバージョン(ImageMagick 7.0.7-21)では、アルファチャネルなしで、結果として白/黒の固体画像しか得られません。コマンドラインを逐語的にコピーし、入出力ファイルのパスのみを変更しました。たぶん、彼らはいくつかの後方互換性のない変更を加えました。
表示名

0

ImageMagick 7.0では、上記の答えはもうありません。ただし、次を使用できます。

変換source.png -channel rgb -fx '#fff' result.png

別名、RGBチャンネルを空白で埋め、アルファを以前と同じようにします。


「-alphaコピー」を見逃したと思われます:)
クリス

0

imagemagick 7では、の-channel RGB前に指定する必要があります-fx。そうしないと、次のように黒一色の画像が得られます。

convert input.png -alpha copy -channel RGB -fx '#000' out.png

そして、黒を不透明に、白を透明にしたい場合は、否定が便利です。

convert input.png -negate -alpha copy -channel RGB -fx '#000' out.png
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.