Misturando cores
Publicado em General
Tudo bem, tem os códigos RGB e tal, mas como que ele efetua as contas ali?
Fui dar uma procurada sobre o assunto, e encontrei.
O cálculo é feito usando o valor médio de cada cor no RGB, ou seja, calcula-se o valor médio dos vermelhos, verdes e azuis das duas cores. Para exemplificar vai ser fácil, que essas duas cores tem só dois valores para calcularmos:
Primeira cor (vermelho):#FF0000 Segunda cor (amarelo) :#FFFF00 Vermelho: --------- primeira cor: 0xFF=255 segunda cor: 0xFF=255 valor médio : (255+255)/2=255 hexa : 0xFF Verde: ------ primeira cor: 0xFF=255 segunda cor: 0x00=0 valor médio : (255+0)/2=127.5 arredondando = 128 hexa : 0x80 Azul: primeira cor: 0x00=0 segunda cor: 0x00=0 valor médio : 0+0/2=0 hexa : 0x00Importante notar que o número tem que ser arredondado. Seguindo ali a sequência dos resultados, acabamos com a cor #FF8000, que é ... laranja! Tchans! :-)
Para automatizar a coisa um pouco mais, eu fiz um pequeno programinha em Ruby para me dar a mistura de duas cores (em hexa) na linha de comando:
c1=ARGV[0].hex c2=ARGV[1].hex red= ((c1>>16).to_f-(((c1>>16)-(c2>>16))/2.0)).round green= (((c1>>8)&0xFF)-(((c1>>8)&0xFF)-((c2>>8)&0xFF))/2.0).round blue= ((c1&0xFF)-((c1&0xFF)-(c2&0xFF))/2.0).round color= ((red<<16)|(green<<8)|blue).to_s(16) puts colorNesse papo de teoria das cores, acabei encontrando no site do Eric Meyer um misturador de cores muito bom, e comecei a pensar como que ele criava todas aquelas cores, com meu conhecimento prévio de como misturar as ditas cujas. Abrindo o fonte da página, tem-se o código JavaScript mas está meio confuso, e eu preferi tentar fazer alguma coisa mais "limpinha".
Acabei fazendo um misturador de cores em Ruby (rodando usando eRuby no Apache), que funciona com menos recursos que o do Meyer, mas já saciou a minha curiosidade sobre a coisa. :-)
O fonte do misturador em Ruby vocês encontram aqui.
Tags:
Comentários
Comentários fechados.
Sem nenhum comentário.