Questo è legato alla CSS codici colore:Come i browser gestiscono rgb (percentuale); per strani numeri
Per hexcode possiamo rappresentare 16.777.216 colori da # 000000 a #FFFFFF
Secondo W3C Spec, percentuali RGB validi si inseriscono in un range da (0,0% al 100,0%) essenzialmente dandoti 1,003,003,001 combinazioni di colori. (1001^3)
Secondo le specifiche:
valori al di fuori della gamma dispositivo devono essere tagliate o mappata nel gamut quando la gamma è nota: i valori di rosso, verde e blu devono essere modificato per rientrare nell'intervallo supportato da il dispositivo. Gli agenti degli utenti possono eseguire una mappatura dei colori di qualità superiore da una gamma all'altra . Per un tipico monitor CRT, la cui gamma di dispositivo è lo stesso di sRGB, le quattro regole di seguito sono equivalenti:
Sono dubbioso se i browser in realtà possono rendere tutti questi valori. (ma se lo fanno per favore dimmi e ignora il resto di questo post)
Suppongo che ci sia qualche mappatura da rgb (percentuale) a esadecimale. (Ma ancora una volta Im non realmente sicuro di come funziona questo)
Idealmente mi piacerebbe scoprire la funzione rgb (in percentuale) -> HEX
Se dovessi indovinare sarebbe probabilmente uno di questi 3.
1) rotonda alla HEX più vicino
2) CEIL alla HEX più vicino
3) FLOOR alla HEX più vicino
il problema è che ho bisogno di essere precisi sulla mappatura e non ho idea di dove cercare. Non c'è modo in cui i miei occhi possano differenziare il colore a quel livello, ma forse c'è un modo intelligente per testare ognuno di questi 3.
Potrebbe anche dipendere dal browser. Questo può essere testato?
EDIT:
Firefox seems to round from empirical testing.
EDIT:
sto guardando attraverso il codice sorgente di Firefox in questo momento,
nsColor.h
// A color is a 32 bit unsigned integer with four components: R, G, B
// and A.
typedef PRUint32 nscolor;
Sembra Fiefox ha spazio solo per 255 valori per ogni R, G e B. Accenno che l'arrotondamento potrebbe essere la risposta, ma forse qualcosa che viene fatto con il canale alfa.
Se non riesci a distinguere tra '# 000000' e' # 000001', perché hai bisogno della formula esatta? Anche un modo tortuoso di test sarebbe quello di visualizzare un blocco del colore, premere Print Screen e utilizzare lo strumento eyedropper di un programma di grafica per scoprire il valore esadecimale risultante. – Toomai
Sto lavorando su un tipo di parser, immagino, ovviamente l'utente finale non dovrebbe essere in grado di distinguere tra # 000000 e # 000001, ma il codice deve essere equivalente su tutti gli account. Mi piace l'idea del eyedropper come primo passo, grazie! – Ray
Se la specifica non specifica una mappatura, quindi mi aspetto che dipenda dal browser, o almeno se non dipende dal browser, quindi è solo una coincidenza che non lo sia. Immagino che finché sei coerente, sei il più preciso possibile. Hai controllato con firebug o alcuni di questi sullo stile calcolato per vedere come va a finire? – jswolf19