Respostas:
Use a -negate
opção:
convert input.png -channel RGB -negate output.png
A -negate
opção substitui cada pixel por sua cor complementar. A -channel RGB
opção é necessária no ImageMagick 7 para impedir que o canal alfa (se presente) seja negado. (Obrigado a @yoya por esse insight!)
Veja também a documentação para -negate
.
-channel RGB -negate
para evitar isso.
-channel RGB
não é necessário. Só inverte o canal alfa se eu passar -channel RGBA -negate
. Não sei ao certo o que explica o comportamento diferente.
identify
vê a entrada como "sRGB de 8 bits", a saída é "Cinza de escala de cinza de 8 bits".
O ImageMagick 6.x pode inverter intensidades de cores apenas com a opção -negate. ref) https://www.imagemagick.org/script/command-line-options.php#negate
convert input.png -negate output.png
O ImageMagick 7.x requer a opção -channel com -negate. ref) https://imagemagick.org/script/porting.php#cli Opções alteradas
convert input.png -channel RGB -negate output.png
Isso ocorre porque os canais ativos padrão contêm transparência (opaco / alfa) no ImageMagick 7.x
ImageMagick6: DefaultChannels = ((AllChannels | SyncChannels) &~ OpacityChannel)
ImageMagick7: DefaultChannels = AllChannels
A maioria dos algoritmos atualiza os canais vermelho, verde, azul, preto (para CMYK) e alfa. A usabilidade de -negate parece ser sacrificada pela consistência geral.
Mais detalhes para você. http://blog.awm.jp/2018/11/18/im7negate/
convert input.png -negate output.png
funciona bem para mim no ImageMagick 7.0.8 (ArchLinux)
identify -verbose input.png | grep Type
Ele gera TrueColor ou TrueColorAlpha.
-channel RGB
a minha resposta.