Как браузеры обрабатывают rgb (в процентах); для странных чисел

Это связано с цветовыми кодами CSS:

Для шестнадцатеричного кода мы можем представить 16 777 216 цветов от # 000000 до #FFFFFF

Согласно спецификациям W3C, допустимые процентные значения RGB соответствуют диапазону от (0,0% до 100,0%) По сути, дает вам 1 003 003 001 цветовую комбинацию. (1001 ^ 3)

Согласно спецификациям:

Значения за пределами гаммы устройства должны быть обрезаны или отображены в гамме, когда гамма известна: красный, зеленый и синий значения должны быть изменено, чтобы попасть в диапазон, поддерживаемый устройством . Пользовательские агенты могут выполнять более качественное отображение цветов из одной гаммы в другую. Для типичного ЭЛТ-монитора, гамма устройства которого такая же, как у sRGB, четыре правила ниже эквивалентны:

Я сомневаюсь, что браузеры действительно могут отображать все эти значения.(но если они это сделают, скажите мне и проигнорируйте остальную часть этого поста)

Я предполагаю, что есть какое-то отображение от rgb (процент) до шестнадцатеричного. (но опять же я не совсем уверен, как это работает)

В идеале я бы хотел найти функцию rgb (процент) -> HEX

Если бы мне пришлось угадывать, это, вероятно, была бы одна из этих 3.

] 1) Округлить до ближайшего HEX

2) CEIL до ближайшего HEX

3) FLOOR до ближайшего HEX

Проблема в том, что мне нужно быть точным при отображении, и я не знаю, где искать. Мои глаза не могут различать цвета на этом уровне, но, возможно, есть какой-нибудь умный способ проверить каждый из этих 3.

Это также может зависеть от браузера. Можно ли это протестировать?

РЕДАКТИРОВАТЬ:

Firefox seems to round from empirical testing.

РЕДАКТИРОВАТЬ:

Я просматриваю исходный код Firefox прямо сейчас,

nsColor.h
// A color is a 32 bit unsigned integer with four components: R, G, B
// and A.
typedef PRUint32 nscolor;

Кажется, в Fiefox есть место только для 255 значений для каждого R, G и B. Подсказка это округление может быть ответом, но, возможно, что-то делается с альфа-каналом.

7
задан Ray 14 October 2011 в 03:02
поделиться