Balikkan warna dengan ImageMagick


27

Bagaimana cara membalikkan warna gambar menggunakan convertalat ImageMagick , sehingga hitam menjadi putih dan putih menjadi hitam?

Dengan kata lain, saya ingin mengubah ini:

asli

dalam hal ini:

terbalik

Jawaban:


45

Gunakan -negateopsi:

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

The -negatepilihan menggantikan setiap pixel dengan warna komplementer. The -channel RGBpilihan yang diperlukan pada ImageMagick 7 untuk mencegah alpha channel (jika ada) dari yang menegasikan. (Terima kasih kepada @yoya untuk wawasan ini!)

Lihat juga dokumentasi untuk -negate.


5
ini membuat png hitam dan putih saya benar-benar transparan ...
theonlygusti

Ini bekerja untuk saya
shadi

2
Masalah transparansi adalah karena saluran alfa juga terbalik. Gunakan -channel RGB -negateuntuk menghindari itu.
pemberhentian goto

1
Itu menarik. ImageMagick di sistem saya (versi 6.8.9) hanya meniadakan saluran RGB, dan bukan saluran alpha secara default, jadi -channel RGBtidak perlu. Itu hanya membalikkan saluran alpha jika saya lewat -channel RGBA -negate. Saya tidak yakin apa yang menjelaskan perilaku yang berbeda.
Jo Liss

Ini bekerja untuk saya, tanpa meniadakan. Yang saya ingin tahu adalah: ketika identifymelihat input sebagai "8-bit sRGB", outputnya adalah "8-bit Grayscale Grey".
user74094

3

ImageMagick 6.x dapat membalikkan intensitas warna dengan opsi -negate saja. ref) https://www.imagemagick.org/script/command-line-options.php#negate

convert input.png -negate output.png

ImageMagick 7.x membutuhkan opsi -channel dengan -negate. ref) https://imagemagick.org/script/porting.php#cli Opsi yang Diubah

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

Ini karena saluran aktif default berisi transparansi (buram / alfa) di ImageMagick 7.x

ImageMagick6: DefaultChannels = ((AllChannels | SyncChannels) &~ OpacityChannel)
ImageMagick7: DefaultChannels = AllChannels

Sebagian besar algoritma memperbarui saluran merah, hijau, biru, hitam (untuk CMYK), dan alfa. Kegunaan -negate tampaknya dikorbankan untuk konsistensi keseluruhan.

Lebih detail untuk Anda. http://blog.awm.jp/2018/11/18/im7negate/


1
convert input.png -negate output.pngberfungsi dengan baik untuk saya di ImageMagick 7.0.8 (ArchLinux)
msrd0

Tidak ada masalah pada gambar RGB tanpa transparansi. RGBA dengan gambar transparansi menyebabkan masalah, hanya ImageMagick7.
yoya

Anda dapat memeriksa apakah file PNG memiliki transparansi atau tidak. identify -verbose input.png | grep Type Ini menggunakan TrueColor atau TrueColorAlpha.
yoya

Jawaban yang bagus, terima kasih! Saya melanjutkan dan menambahkan -channel RGBjawaban saya.
Jo Liss
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.