Antworten:
Verwenden Sie die -negateOption:
convert input.png -channel RGB -negate output.png
Die -negateOption ersetzt jedes Pixel durch seine Komplementärfarbe. Die -channel RGBOption 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 RGBist 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.
identifydie 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.pngFunktioniert gut für mich auf ImageMagick 7.0.8 (ArchLinux)
identify -verbose input.png | grep Type Es gibt TrueColor oder TrueColorAlpha aus.
-channel RGBmeiner Antwort hinzu.