ImageMagick ile renkleri ters çevirin


27

ImageMagick convertaracını kullanarak bir görüntünün renklerini nasıl tersine çevirebilirim , böylece siyah beyaz olur ve beyaz siyah olur?

Başka bir deyişle, bunu çevirmek istiyorum:

orijinal

bunun içine:

ters

Yanıtlar:


45

-negateSeçeneği kullanın :

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

-negateSeçenek onun tamamlayıcı rengi ile her pikseli değiştirir. -channel RGBAlfa kanalının (varsa) reddedilmesini önlemek için bu seçenek ImageMagick 7'den itibaren gereklidir. (Bu fikir için @yoya'ya teşekkürler!)

Ayrıca bakınız belgelere için -negate.


5
Bu benim siyah ve beyaz png tamamen şeffaf yaptı ...
— theonlygusti

Bu benim için çalıştı
— shadi

2
Şeffaflık sorunu, alfa kanalının da ters çevrilmiş olmasıdır. Bundan -channel RGB -negatekaçınmak için kullanın .
— goto-bus-stop

1
İlginç. Sistemimdeki ImageMagick (sürüm 6.8.9), alfa kanalını varsayılan olarak değil, yalnızca RGB kanallarını reddeder, bu yüzden -channel RGBgerekli değildir. Alfa kanalını yalnızca geçersem ters çevirir -channel RGBA -negate. Farklı davranışı açıklayan şeyin ne olduğundan emin değilim.
— Jo Liss

Benim için çalışır, olumsuzluk olmadan. Merak ettiğim şey: identifygirişi "8-bit sRGB" olarak görürken, çıktı "8-bit Gri Tonlamalı Gri" dir.
— user74094

3

ImageMagick 6.x yalnızca -negate seçeneği ile renk yoğunluklarını tersine çevirebilir. ref) https://www.imagemagick.org/script/command-line-options.php#negate

convert input.png -negate output.png

ImageMagick 7.x, -negate ile -channel seçeneğini gerektirir. ref) https://imagemagick.org/script/porting.php#cli Değiştirilmiş Seçenekler

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

Bunun nedeni, varsayılan etkin kanalların ImageMagick 7.x'te saydamlık (opak / alfa) içermesidir.

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

Çoğu algoritma kırmızı, yeşil, mavi, siyah (CMYK için) ve alfa kanallarını günceller. -Negate'in kullanılabilirliği genel tutarlılık için feda edilmiş gibi görünüyor.

Sizin için daha fazla detay. http://blog.awm.jp/2018/11/18/im7negate/


1
convert input.png -negate output.pngImageMagick 7.0.8'de benim için iyi çalışıyor (ArchLinux)
— msrd0

Şeffaflık içermeyen RGB görüntüsünde sorun yoktur. Şeffaflık görüntüsüne sahip RGBA soruna neden olur, yalnızca ImageMagick7.
— yoya

PNG dosyasının saydamlığı olup olmadığını kontrol edebilirsiniz. identify -verbose input.png | grep Type TrueColor veya TrueColorAlpha çıktı.
— yoya

Harika cevap, teşekkürler! Devam ettim ve -channel RGBcevabımı ekledim .
— Jo Liss
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.