Antworten:
Verwenden Sie die -negate
Option:
convert input.png -channel RGB -negate output.png
Die -negate
Option ersetzt jedes Pixel durch seine Komplementärfarbe. Die -channel RGB
Option ist ab ImageMagick 7 erforderlich, um zu verhindern, dass der Alphakanal (falls vorhanden) negiert wird. (Danke an @yoya für diesen Einblick!)
Siehe auch die Dokumentation zu -negate
.
-channel RGB -negate
, um das zu vermeiden.
-channel RGB
ist also nicht erforderlich. Es invertiert nur den Alpha-Kanal, wenn ich übergebe -channel RGBA -negate
. Ich bin nicht sicher, was das unterschiedliche Verhalten erklärt.
identify
die Eingabe "8-Bit-sRGB" ist, ist die Ausgabe "8-Bit-Graustufen-Grau".
ImageMagick 6.x kann Farbintensitäten nur mit der Option -negate invertieren. ref) https://www.imagemagick.org/script/command-line-options.php#negate
convert input.png -negate output.png
ImageMagick 7.x benötigt die Option -channel mit -negate. ref) https://imagemagick.org/script/porting.php#cli Geänderte Optionen
convert input.png -channel RGB -negate output.png
Dies liegt daran, dass die standardmäßig aktiven Kanäle in ImageMagick 7.x Transparenz (opak / alpha) enthalten
ImageMagick6: DefaultChannels = ((AllChannels | SyncChannels) &~ OpacityChannel)
ImageMagick7: DefaultChannels = AllChannels
Die meisten Algorithmen aktualisieren die Kanäle Rot, Grün, Blau, Schwarz (für CMYK) und Alpha. Die Verwendbarkeit von -negate scheint aus Gründen der Gesamtkonsistenz geopfert zu werden.
Mehr Details für Sie. http://blog.awm.jp/2018/11/18/im7negate/
convert input.png -negate output.png
Funktioniert gut für mich auf ImageMagick 7.0.8 (ArchLinux)
identify -verbose input.png | grep Type
Es gibt TrueColor oder TrueColorAlpha aus.
-channel RGB
meiner Antwort hinzu.