Existe uma solução envolvendo compositores baseados em OpenGL (compton, por exemplo) e um shader personalizado (* .glsl).
Aqui está a observação da técnica, junto com o arquivo shader: link
Como inverto as cores da tela por valor ?
A maneira mais comum de inverter cores é usar negação de RGB. Infelizmente, não é muito bonito: o azul fica amarelo, o verde fica magenta, etc.
O que eu quero é inverter value
, um dos componentes entre hue
e saturation
. Desta forma, as cores escuras se tornarão leves, a luz se tornará escura, mas o azul permanecerá azul de qualquer maneira.
Exemplo de saída (criada com o GIMP, não funciona na tela inteira):
O objetivo é ter a tela inteira "invertida", para que você possa ler PDFs, Firefox, mensagens instantâneas - tudo em cores escuras.
Existe uma solução envolvendo compositores baseados em OpenGL (compton, por exemplo) e um shader personalizado (* .glsl).
Aqui está a observação da técnica, junto com o arquivo shader: link
Você pode usar a ferramenta ImageMagick com o opção de matriz de cores :
This option permits saturation changes, hue rotation, luminance to alpha, and various other effects. Although variable-sized transformation matrices can be used, typically one uses a 5x5 matrix for an RGBA image and a 6x6 for CMYKA (or RGBA with offsets). The matrix is similar to those used by Adobe Flash except offsets are in column 6 rather than 5 (in support of CMYKA images) and offsets are normalized (divide Flash offset by 255).
As an example, to add contrast to an image with offsets, try this command:
convert kittens.jpg -color-matrix \ " 1.5 0.0 0.0 0.0, 0.0, -0.157 \ 0.0 1.5 0.0 0.0, 0.0, -0.157 \ 0.0 0.0 1.5 0.0, 0.0, -0.157 \ 0.0 0.0 0.0 1.0, 0.0, 0.0 \ 0.0 0.0 0.0 0.0, 1.0, 0.0 \ 0.0 0.0 0.0 0.0, 0.0, 1.0" kittens.png