Dê-me uma cor e eu lhe darei um nome.
Color Namer é um pacote npm para uso em Node.js ou no navegador que calcula a distância da cor usando a técnica de diferença de cor Delta-E. Dada uma cor no formato Hexadecimal RGB, RGBA, HSL ou HSV, ele converte a cor no espaço de cores L a b* e, em seguida, calcula a distância euclidiana da cor a partir de um conjunto de cores com nomes conhecidos.
Mike Bostock, famoso pelo D3, explica bem:
Os espaços de cores Lab e HCL são especiais porque a diferença percebida entre duas cores é proporcional à sua distância euclidiana no espaço de cores. Esta propriedade especial, chamada uniformidade perceptiva, os torna ideais para codificação visual precisa de dados. Em contraste, os espaços de cores RGB e HSL mais familiares distorcem os dados quando usados para visualização.
Os nomes das cores são derivados de várias listas:
npm install color-namer --save
Requer o módulo:
var namer = require ( 'color-namer' )
var names = namer ( "#FF0000" )
A partir do código acima, names
terão uma chave para cada lista:
names.roygbiv
names.basic
names.html
names.x11
names.pantone
names.ntc
Cada lista é uma matriz de cores, classificadas por sua semelhança perceptiva com a cor fornecida:
[
{ name : 'red' ,
hex : '#FF0000' ,
distance : 0
} , {
name : 'orangered' ,
hex : '#FF4500' ,
distance : 13.170205025755513
} , {
name : 'tomato' ,
hex : '#FF6347' ,
distance : 31.733444038510665
} , {
name : 'crimson' ,
hex : '#DC143C' ,
distance : 35.38084849496472
} , {
name : 'firebrick' ,
hex : '#B22222' ,
distance : 40.71076805218006
} , {
name : 'coral' ,
hex : '#FF7F50' ,
distance : 42.340752375722616
} , {
name : 'chocolate' ,
hex : '#D2691E' ,
distance : 44.378454180212145
}
]
Outros formatos de entrada também funcionam como HSL, RGB e RGBA:
name ( "hsl(50,100%,50%)" )
name ( "rgb(255,0,0)" )
name ( "rgba(255,0,0,1)" )
Esta opção nos permite derivar nomes de listas dedicadas para um cálculo mais rápido.
var names = namer ( color , { pick : [ 'basic' , 'x11' ] } )
// output: { basic: [...], x11: [...] }
O oposto de options.pick
.
var names = namer ( color , { omit : [ 'pantone' , 'roygbiv' ] } )
// output: { basic: [...], html: [...], x11: [...], ntc: [...] }
Se for 'deltaE', use a função de distância Delta-E, caso contrário, use a função de distância padrão.
var names = namer ( color , { pick : [ 'basic' ] , distance : 'deltaE' } ) ;
// output: { basic: [...] }
npm install
npm test
MIT