Відповіді:
Скористайтеся -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) та альфа-канали. Здатність використання -негату, здається, приноситься в жертву за загальну послідовність.
Більш детально для вас. 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свою відповідь.