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

Jo Liss
sumber

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.

Jo Liss
sumber
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/

yoya
sumber
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