Інвертувати кольори за допомогою ImageMagick


27

Як інвертувати кольори зображення за допомогою convertінструмента ImageMagick , щоб чорний став білим, а білий став чорним?

Іншими словами, я хочу перетворити це:

оригінальний

в це:

перевернутий

Відповіді:


45

Скористайтеся -negateопцією:

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

-negateОпція замінює кожен піксель зі своїм додатковим кольором. Цей -channel RGBпараметр необхідний для ImageMagick 7, щоб запобігти запереченню альфа-каналу (за наявності). (Дякую @yoya за це розуміння!)

Дивіться також документацію для -negate.


5
це зробило моє чорно-біле png повністю прозорим ...
theonlygusti

Це працювало для мене
шаді

2
Проблема прозорості полягає в тому, що альфа-канал також інвертований. Використовуйте, -channel RGB -negateщоб уникнути цього.
зупинка на автобусі-автобусі

1
Це цікаво. ImageMagick в моїй системі (версія 6.8.9) лише заперечує канали RGB, а не альфа-канал за замовчуванням, тому -channel RGBне є необхідним. Він перевертає альфа-канал лише тоді, коли я проходжу -channel RGBA -negate. Я не впевнений, що пояснює різну поведінку.
Джо Лісс

Це працює для мене, без негативу. Мені цікаво хоч і таке: хоча identifyвхід бачить як "8-бітний sRGB", вихід "8-бітний відтінки сірого".
користувач74094

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 вимагає параметр -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/


1
convert input.png -negate output.pngдобре працює для мене на ImageMagick 7.0.8 (ArchLinux)
msrd0

З RGB-зображенням немає проблем без прозорості. RGBA з прозорістю зображення викликає проблему, лише ImageMagick7.
yoya

Ви можете перевірити, чи має файл PNG прозорість чи ні. identify -verbose input.png | grep Type Це виводить TrueColor або TrueColorAlpha.
yoya

Чудова відповідь, дякую! Я пішов вперед і додав -channel RGBсвою відповідь.
Джо Лісс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.