Ответы:
Используйте -negate
опцию:
convert input.png -channel RGB -negate output.png
-negate
Опция заменяет каждый пиксель со своим дополнительным цветом. Эта -channel RGB
опция необходима в ImageMagick 7 для предотвращения отрицания альфа-канала (если имеется). (Спасибо @yoya за это понимание!)
Смотрите также документацию для -negate
.
-channel RGB -negate
чтобы избежать этого.
-channel RGB
не является необходимым. Это только инвертирует альфа-канал, если я прохожу -channel RGBA -negate
. Я не уверен, что объясняет другое поведение.
identify
что хотя вход воспринимается как «8-битный sRGB», вывод - «8-битный серый».
ImageMagick 6.x может инвертировать интенсивность цвета только с опцией -negate. ref) https://www.imagemagick.org/script/command-line-options.php#negate
convert input.png -negate output.png
Для ImageMagick 7.x требуется параметр -channel с параметром -negate. 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/
convert input.png -negate output.png
у меня отлично работает на ImageMagick 7.0.8 (ArchLinux)
identify -verbose input.png | grep Type
Он выводит TrueColor или TrueColorAlpha.
-channel RGB
к своему ответу.