Программно выберите высококонтрастные цвета

Предупреждение: действующее ограничение open_basedir

Это предупреждение может появляться с различными функциями, связанными с доступом к файлам и каталогам. Он предупреждает о проблеме с конфигурацией.

Когда он появляется, это означает, что доступ был запрещен для некоторых файлов.

Само предупреждение ничего не нарушает, но чаще всего скрипт не работает должным образом, если предотвращается доступ к файлу.

Исправление обычно изменяет конфигурацию PHP , связанная настройка называется open_basedir .

Иногда неправильный имена файлов или каталогов, тогда исправление должно использовать правильные.

Вопросы, относящиеся

27
задан Andrew Eisenberg 4 May 2012 в 03:53
поделиться

6 ответов

Вам нужно различие в яркости для текста, чтобы быть читаемыми, поскольку само цветное видение имеет слишком низкое разрешение.

Поэтому как алгоритм я предложил бы следующее:

  • Выбор случайный цвет фона.

  • Тогда решают, является ли это светом или темным цветом. Например, Вы могли проверить, является ли среднее число этих трех основных цветов большими или равными 128.

  • Для светлого цвета используют черный текст, для темного белый текст.

24
ответ дан starblue 28 November 2019 в 05:24
поделиться

"Контраст" является загруженным словом. Если Вы просто заботитесь о способности прочитать текст, то один простой способ состоит в том, чтобы работать в основанном на яркости цветовом пространстве как HSL, и выбирать основные цвета и цвета фона с большими различиями в яркости.

преобразование между HSL и RGB известно - посмотрите Википедию для деталей.

, Если Вы говорите о фактическом цветном контрасте, это совсем не как шаблонное (существует много перцепционных факторов, которые, насколько я знаю, не были уменьшены до единственного пространства цветов), но я подозреваю, что Вам не нужен тот уровень изощренности.

7
ответ дан Tim Lesher 28 November 2019 в 05:24
поделиться

Я сделал что-то вроде этого в приложении Palm OS. Это - то, что я придумал. Это не дает Вам "высококонтрастные" цвета, но это дает Вам цвет фона, это достаточно отличается от цвета текста, чтобы быть довольно читаемым:

  // Black background is a special case.  It's fairly likely to occur and 
  // the default color shift we do isn't very noticeable with very dark colors.
  if (backColor.r < 0x20 && backColor.g < 0x20 && backColor.b < 0x20)
  {
      textColor.r = backColor.r + 0x20;
      textColor.g = backColor.g + 0x20;
      textColor.b = backColor.b + 0x20;
  }
  else
  {
      textColor.r = backColor.r + ((backColor.r < 128) ? 0x10 : -0x10);
      textColor.g = backColor.g + ((backColor.g < 128) ? 0x10 : -0x10);
      textColor.b = backColor.b + ((backColor.b < 128) ? 0x10 : -0x10);
  }

Вы, возможно, не должны были бы делать черный как особый случай в Ваших целях - цветная обработка Palm немного броска (16-разрядный цвет).

1
ответ дан mhenry1384 28 November 2019 в 05:24
поделиться

Существуют некоторые хорошие ресурсы (и алгоритмы) для обращения к этому в http://juicystudio.com/article/luminositycontrastratioalgorithm.php

1
ответ дан Michael Bray 28 November 2019 в 05:24
поделиться

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

я полагаю, что это - ~ оператор в C#:

R2 = ~R1;
G2 = ~G1;
B2 = ~B1;
0
ответ дан bobwienholt 28 November 2019 в 05:24
поделиться

Ознакомьтесь с этим решением PHP: Расчет цветового контраста с помощью PHP Андреаса Гора. Конечно, его можно портировать на любой язык.

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

4
ответ дан 28 November 2019 в 05:24
поделиться