Интеллектуальное обнаружение цвета - PullRequest
4 голосов
/ 10 апреля 2011

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

Но мы задаемся вопросом, существует ли конкретный шаблон для шестнадцатеричных кодов цветов.Возможно, если оно меньше заданного значения, следует использовать темный шрифт, а в противном случае - светлый шрифт?

Итак, есть ли интеллектуальный способ программно выбрать цвет шрифта на основе выбранного пользователем цвета фона?

Эми

Ответы [ 4 ]

11 голосов
/ 10 апреля 2011

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

http://24ways.org/2010/calculating-color-contrast

0 голосов
/ 09 января 2015

Попробуйте эту функцию;

function wc_light_or_dark( $color, $dark = '#000000', $light = '#FFFFFF' ) {

    $hex = str_replace( '#', '', $color );

    $c_r = hexdec( substr( $hex, 0, 2 ) );
    $c_g = hexdec( substr( $hex, 2, 2 ) );
    $c_b = hexdec( substr( $hex, 4, 2 ) );

    $brightness = ( ( $c_r * 299 ) + ( $c_g * 587 ) + ( $c_b * 114 ) ) / 1000;

    return $brightness > 155 ? $dark : $light;
}

Источник: http://woocommerce.wp -a2z.org / oik_api / wc_light_or_dark /

0 голосов
/ 10 апреля 2011

Для вашего первого вопроса шестнадцатеричные значения цветовых кодов в формате RGB, я полагаю. Это означает, что первый байт - это количество красного цвета в цвете; второй байт - это количество зелени в цвете; и третий байт - это количество синевы в цвете.

Если вы хотите попытаться угадать цвет шрифта, вы можете попробовать посмотреть, насколько он близок к #FFFFFF, и использовать темный цвет, если он меньше # 777777.

Я ни в коем случае не специалист по цветам, поэтому не буду гарантировать правильность этого ответа.

0 голосов
/ 10 апреля 2011

Яркость цвета: http://www.webmasterworld.com/forum88/9769.htm

Но, на самом деле, почему бы просто не инвертировать фон и использовать результирующий цвет как передний план?

...