как увидеть, если цвет RGB слишком светлый - PullRequest
11 голосов
/ 29 марта 2011

У меня есть приложение, в котором клиент выбирает цвет. Я не могу позволить этому цвету быть слишком светлым. Есть ли способ увидеть это, чтобы клиент не выбрал слишком светлый цвет?

Большое спасибо!


слишком светлый, в случае, это цвет почти белый .... У меня есть веб-сайт с белым фоном, и пользователь может выбрать цвет через плагин jquery.

Я хочу разрешить пользователю выбирать желаемый цвет, но он не может быть слишком светлым.

Ответы [ 3 ]

24 голосов
/ 29 марта 2011

Если вы ищете контраст, прочитайте эту статью .

Они показывают функцию, подобную этой, чтобы выбрать цвет текста на основе любого произвольного цвета:

function isTooLightYIQ(hexcolor){
  var r = parseInt(hexcolor.substr(0,2),16);
  var g = parseInt(hexcolor.substr(2,2),16);
  var b = parseInt(hexcolor.substr(4,2),16);
  var yiq = ((r*299)+(g*587)+(b*114))/1000;
  return yiq >= 128;
}

// usage:
element.style.color = isTooLightYIQ('ff0045') ? '#000' : '#fff';

Приведенная выше функция вернет true, если цвет слишком светлый, чтобы белый текст был читаемым поверх этого цвета.

0 голосов
/ 29 марта 2011

Вы не слишком конкретны, но при условии, что вы используете Javascript,

var v = Math.round((r+g+b)/3) и убедитесь, что оно ниже определенного порога?

Кроме того, какой формы цветв?RGB?HSL?Hex

0 голосов
/ 29 марта 2011

'слишком легкий' относительно чего?Некоторое изображение?чисто белый?какой-то оттенок серого?Самый простой способ - просто убедиться, что одно из значений членов R, G, B превышает некоторый порог, хотя это не поможет, если пользователь выберет (128,0,0), и оно будет вставлено в изображение, которое (127, 0,0) - разница составляет (1,0,0) и будет невидимой или, как минимум, почти невозможной для обнаружения на большинстве мониторов.

...