Invierta colores con ImageMagick


27

¿Cómo invierto los colores de una imagen con la convertherramienta ImageMagick para que el negro se vuelva blanco y el blanco se vuelva negro?

En otras palabras, quiero convertir esto:

original

dentro de esto:

invertido

Respuestas:


45

Usa la -negateopción:

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

La -negateopción reemplaza cada píxel con su color complementario. La -channel RGBopción es necesaria a partir de ImageMagick 7 para evitar que se niegue el canal alfa (si está presente). (¡Gracias a @yoya por esta información!)

Consulte también la documentación de -negate.


55
esto hizo que mi png en blanco y negro fuera completamente transparente ...
— theonlygusti

Esto funcionó para mí
— shadi

2
El problema de la transparencia se debe a que el canal alfa también está invertido. Use -channel RGB -negatepara evitar eso.
— goto-bus-stop

1
Eso es interesante. ImageMagick en mi sistema (versión 6.8.9) solo niega los canales RGB, y no el canal alfa por defecto, por -channel RGBlo que no es necesario. Solo invierte el canal alfa si paso -channel RGBA -negate. No estoy seguro de qué explica el comportamiento diferente.
— Jo Liss

Funciona para mí, sin negar. Sin embargo, lo que tengo curiosidad es que: mientras identifyve la entrada como "sRGB de 8 bits", la salida es "Gris de escala de grises de 8 bits".
— user74094

3

ImageMagick 6.x puede invertir intensidades de color solo con la opción -negate. ref) https://www.imagemagick.org/script/command-line-options.php#negate

convert input.png -negate output.png

ImageMagick 7.x requiere la opción -channel con -negate. ref) https://imagemagick.org/script/porting.php#cli Opciones modificadas

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

Esto se debe a que los canales activos predeterminados contienen transparencia (opaca / alfa) en ImageMagick 7.x

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

La mayoría de los algoritmos actualizan los canales rojo, verde, azul, negro (para CMYK) y alfa. La usabilidad de -negate parece ser sacrificada por la consistencia general.

Más detalles para ti. http://blog.awm.jp/2018/11/18/im7negate/


1
convert input.png -negate output.pngfunciona bien para mí en ImageMagick 7.0.8 (ArchLinux)
— msrd0

No hay problema en la imagen RGB sin transparencia. RGBA con imagen de transparencia causa problemas, solo ImageMagick7.
— yoya

Puede verificar que el archivo PNG tenga transparencia o no. identify -verbose input.png | grep Type Supera TrueColor o TrueColorAlpha.
— Yoya

Gran respuesta, gracias! Seguí adelante y agregué -channel RGBa mi respuesta.
— Jo Liss
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.