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.