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.