グレースケールの画像があります。すべての色合いで、(元の画像の)黒いピクセルが完全に不透明になり、白いピクセルが完全に透明になり、50%の灰色のピクセルが50%透明になるように、透明なPNGに変換したいと思います。間に。
どうすればこれを達成できますか?
(はい、これはほぼと同じ質問です グレースケールシェードをアルファチャネルに変換する ですが、知りたいですこれを行う方法コマンドラインツールのみを使用–例:ImageMagickまたはNetPBM)
上記の質問の結果のサンプルを次に示します。このサンプルは、コマンドラインツールのみを使用して実現したい結果です。
透明度をサポートするビューアでこのPNGを開くと、私が何を意味するかがわかります。
Ooookay。たくさんグーグルして、私が実際に気にかけているよりも多くのImageMagickマニュアルを読んだ後、ここに答えがあります。 source.png
というグレースケール画像がある場合、これが私のコマンドです。
黒のピクセルを透明にし、白のピクセルをそのまま維持するには、次のコマンドを実行します。
convert source.png -alpha copy -fx '#fff' result.png
代わりに黒をそのままにして白のピクセルを透明にするには、次を使用します。
convert source.png -alpha copy -channel alpha -negate +channel -fx '#000' result.png
最後のコマンドをもう少し詳しく説明しましょう。
convert
– ImageMagicコマンドです(いくつかのコマンドの1つ)source.png
–グレースケールソース画像。-alpha copy
–前のファイルの内容をアルファチャンネルにコピーします。-channel alpha
–次の演算子のみがアルファチャネルに影響するように指定します。-negate
–アルファチャネルを反転します(前の-chanel alpha
のため、画像の他の部分には影響しません)。+channel
–次の演算子のみがカラーチャンネルに影響を与え、アルファチャンネルは変更しないように指定します。 (これはデフォルトであるため、最初のより単純な例で提供する必要はありません。)-fx '#000'
–カラーチャネルの内容を黒のピクセルに置き換えます。 (+channel
のため、アルファチャネルは影響を受けません)。最後の-fx
オプションを含めることは非常に重要です。そうしないと、生成された画像のすべての半透明ピクセルが色を保持します。 (これらのピクセルは半透明であるため、明らかではないかもしれませんが、最終的な結果は期待したものではありません。)
ImageMagickオプション のリストは非常に便利だと思いました。
ImageMagick 7.0では、上記の答えはもうありません。しかし、あなたは使うことができます:
変換source.png-channel rgb -fx '#fff' result.png
別名、RGBチャンネルを空白で埋め、前と同じようにアルファを設定します。
Imagemagick 7では、-channel RGB
の前に-fx
を指定する必要があることがわかりました。そうしないと、次のように黒一色の画像が表示されます。
convert input.png -alpha copy -channel RGB -fx '#000' out.png
また、黒を不透明にし、白を透明にしたい場合は、negateが便利です。
convert input.png -negate -alpha copy -channel RGB -fx '#000' out.png