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.