2011-04-10 3 views
4

우리는 사용자가 특정 상태에 따라 달력에 표시 할 색을 정의 할 수있는 의료 스케줄링 시스템을 개발 중입니다. 사용자가 어두운 배경 색상을 선택하고 어두운 글꼴을 사용하는 경우 글꼴이 표시되지 않습니다. 마찬가지로 밝은 색상을 선택하고 밝은 글꼴을 사용하는 경우 여러 가지 이유로 사용자가 두 색상을 모두 설정하지 않기를 원합니다.지능형 색상 감지

그러나 색상의 16 진수 코드에 특정 패턴이 있는지 궁금해합니다. 아마도 주어진 값보다 작 으면 어두운 글꼴을 사용해야하고 밝은 글꼴을 사용하는 것이 좋습니다.

그래서 사용자가 선택한 배경색을 기반으로 글꼴 색상을 프로그래밍 방식으로 선택하는 지능적인 방법이 있습니까?

에이미

답변

11

당신은 수학적으로 두 가지 색상의 대비를 계산하기 위해 진수 코드를 사용할 수 있습니다. 그 정보로 질문은 선택된 배경색과의 대비가 더 높은 텍스트의 색 (흰색 또는 검정색)에 불과합니다. 이 사이트는 PHP 또는 자바 스크립트로 코드를 작성하는 방법을 보여 주지만 다른 언어에도 쉽게 적용 할 수 있습니다.

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

+0

적합합니다. :) 고맙습니다. 나는 시스템이 허락하는 즉시이 대답을 받아 들일 것이다. –

+0

이 답변에 요약 또는 적어도 소개를 쓸 수 있습니까? – Lekensteyn

+0

완벽한 솔루션 –

0

색 밝기 : http://www.webmasterworld.com/forum88/9769.htm

그러나, 실제로, 왜 단지 배경 및 사용 결과 색상을 반전되지는 전경입니까?

+0

회색을 반전 시키면 회색이됩니다. 이것은 좋은 생각이 아닙니다. 검정 또는 흰색을 사용하십시오 (더 멀리 떨어져있는 것에 따라 다름), 이것은 보는 것이 가장 좋습니다 (또한 색맹 인에게도 효과적입니다). –

0

첫 번째 질문에 대한 색상 코드의 16 진수 값은 RGB 형식으로되어 있습니다. 즉, 첫 번째 바이트는 색상의 빨강 양입니다. 두 번째 바이트는 색상의 녹색 정도입니다. 세 번째 바이트는 색상의 청색의 양입니다.

글꼴 색을 추측하고 싶다면 #FFFFFF에 얼마나 가깝게 보이는지 알아볼 수 있으며 # 777777보다 작 으면 어두운 색을 사용하십시오.

나는 어떤 방법 으로든 전문가가 아니므로이 답변의 정확성을 보장하지는 않습니다.

0

이 기능을 사용해보십시오.

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/

관련 문제