Invertire i colori con ImageMagick


27

Come invertire i colori di un'immagine usando lo convertstrumento ImageMagick , in modo che il nero diventi bianco e il bianco diventi nero?

In altre parole, voglio trasformare questo:

originale

in questo:

rovesciato

Risposte:


45

Usa l' -negateopzione:

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

L' -negateopzione sostituisce ogni pixel con il suo colore complementare. L' -channel RGBopzione è necessaria a partire da ImageMagick 7 per evitare che il canale alfa (se presente) venga negato. (Grazie a @yoya per questa intuizione!)

Vedi anche la documentazione per -negate.


5
questo ha reso il mio png in bianco e nero completamente trasparente ...
theonlygusti,

Questo ha funzionato per me
Shadi

2
Il problema della trasparenza è perché anche il canale alfa è invertito. Usa -channel RGB -negateper evitarlo.
fermata dell'autobus

1
Interessante. ImageMagick sul mio sistema (versione 6.8.9) nega solo i canali RGB e non il canale alfa per impostazione predefinita, quindi -channel RGBnon è necessario. Inverte il canale alfa solo se passo -channel RGBA -negate. Non sono sicuro di cosa spieghi il diverso comportamento.
Jo Liss,

Funziona per me, senza negare. Ciò di cui sono curioso è però: mentre identifyvede l'ingresso come "sRGB a 8 bit", l'output è "Gray a scala di grigi a 8 bit".
user74094,

3

ImageMagick 6.x può invertire l'intensità del colore solo con l'opzione -negate. rif) https://www.imagemagick.org/script/command-line-options.php#negate

convert input.png -negate output.png

ImageMagick 7.x richiede l'opzione -channel con -negate. ref) https://imagemagick.org/script/porting.php#cli Opzioni modificate

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

Questo perché i canali attivi predefiniti contengono trasparenza (opaco / alfa) in ImageMagick 7.x

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

La maggior parte degli algoritmi aggiorna i canali rosso, verde, blu, nero (per CMYK) e alfa. L'usabilità di -negate sembra essere sacrificata per coerenza generale.

Maggiori dettagli per te. http://blog.awm.jp/2018/11/18/im7negate/


1
convert input.png -negate output.pngfunziona bene per me su ImageMagick 7.0.8 (ArchLinux)
msrd0

Non ci sono problemi sull'immagine RGB senza trasparenza. RGBA con immagine di trasparenza causa problemi, solo ImageMagick7.
yoya,

Puoi verificare che il file PNG sia trasparente o meno. identify -verbose input.png | grep Type Trasmette TrueColor o TrueColorAlpha.
yoya,

Ottima risposta, grazie! Sono andato avanti e ho aggiunto -channel RGBalla mia risposta.
Jo Liss,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.