ImageMagickで色を反転する


27

ImageMagick convertツールを使用して画像の色を反転すると、黒が白になり、白が黒になります。

言い換えれば、私はこれを回したい:

元の

これに:

逆さ

回答:


45

-negateオプションを使用します。

convert input.png -channel RGB -negate output.png

この-negateオプションは、各ピクセルを補色で置き換えます。-channel RGBImageMagick 7以降、アルファチャネル(存在する場合)が無効にされないようにするためのオプションが必要です。(この洞察を@yoyaに感謝します!)

参照してくださいドキュメントのために-negate


5
これにより、私の白黒pngが完全に透明になりました
...-theonlygusti

これは私のために働いた
-shadi

2
透明度の問題は、アルファチャネルも反転しているためです。それ-channel RGB -negateを避けるために使用します。
gotoバス停

1
それは面白い。私のシステム(バージョン6.8.9)のImageMagickは、デフォルトではアルファチャネルではなくRGBチャネルのみを無効にするため、-channel RGB必要ありません。通過し-channel RGBA -negateた場合にのみアルファチャネルを反転します。異なる動作を説明するものがわかりません。
ジョー・リス

それは否定することなく、私のために働きます。私が興味を持っているのはidentify、入力を「8ビットsRGB」と見なしている一方で、出力は「8ビットグレースケールグレー」です。
user74094

3

ImageMagick 6.xは、-negateオプションでのみ色の強度を反転できます。ref)https://www.imagemagick.org/script/command-line-options.php#negate

convert input.png -negate output.png

ImageMagick 7.xでは、-negateとともに-channelオプションが必要です。ref)https://imagemagick.org/script/porting.php#cli変更されたオプション

convert input.png -channel RGB -negate output.png

これは、ImageMagick 7.xではデフォルトのアクティブチャネルに透明度(不透明/アルファ)が含まれているためです。

ImageMagick6: DefaultChannels = ((AllChannels | SyncChannels) &~ OpacityChannel)
ImageMagick7: DefaultChannels = AllChannels

ほとんどのアルゴリズムは、赤、緑、青、黒(CMYKの場合)、およびアルファチャネルを更新します。-negateの使いやすさは、全体的な一貫性のために犠牲にされているようです。

あなたのための詳細。http://blog.awm.jp/2018/11/18/im7negate/


1
convert input.png -negate output.pngImageMagick 7.0.8(ArchLinux)で
正常に動作します-msrd0

透明度のないRGB画像には問題はありません。透明画像を使用したRGBAは、ImageMagick7のみで問題を引き起こします。
ヨーヤ

PNGファイルに透明度があるかどうかを確認できます。identify -verbose input.png | grep Type TrueColorまたはTrueColorAlphaを出力します。
ヨーヤ

すばらしい答え、ありがとう!私は先に進み-channel RGB、答えに追加しました。
ジョー・リス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.