저는 사용자 정의 비머 테마를 만들고 있으며 프레젠테이션에 사용되는 색상을 다음과 같이 설정하는 명령을 정의했습니다: \definecolor{primarycolor}{HTML}{9C27B0}
(보라색 btw). 프레임의 배경색이 있다고
가정해 보겠습니다 .primarycolor
이제 주어진 색상의 밝기/휘도를 계산하여 텍스트에 적합한 색상(검은색 또는 흰색)을 결정할 수 있기를 원합니다. 보라색의 경우 흰색은 읽을 수 있는 텍스트 색상입니다.
나는 그렇게 할 것이다(의사 코드):
luminance := 0.2126 * Red + 0.7152 * Green + 0.0722 * Blue
textcolor := luminance < 128 ? black : white
색상의 RGB 값을 얻은 다음 "대비 색상"(검정색 또는 흰색)을 어떻게 결정합니까?
답변1
다음은 색상의 광도를 결정한 다음 대비 색상을 결정하는 솔루션입니다(깨끗하지는 않지만 작동합니다).
\RequirePackage{xcolor, etoolbox, xstring}
\definecolor{LightBlue}{HTML}{03A9F4}
\extractcolorspecs{grayScaleColor}{\modelspec}{\grayscale}
\StrBehind[1]{\grayscale}{0.}[\nbrstring]
\StrLeft{\nbrstring}{1}[\nbr]
\ifnumcomp{\nbr}{>}{5}{ % Brighter
\colorlet{primary-text-color}{black}
}{ % Less bright
\colorlet{primary-text-color}{white}
}
답변2
비슷한 기능이 필요했습니다. 이 솔루션에는 다음이 필요합니다.PGF
\newcommand{\setcolor}[3]{%
\definecolor{#1}{HTML}{#3}%
\extractcolorspecs{#1}{\modelspec}{\grayscale}%
\pgfmathparse{(
array({\grayscale},0)*0.2126+
array({\grayscale},1)*0.7152+
array({\grayscale},2)*0.0722)>=0.5?int(1):int(0)}%
\ifnum\pgfmathresult>0%
\colorlet{#2}{black}%
\else%
\colorlet{#2}{white}%
\fi%
}%
다음 방법으로 전화할 수 있습니다.
\setcolor{my-background-color}{my-foreground-color}{377EB8}
HTML 색상 정의에서만 작동하지만 쉽게 확장할 수 있다고 생각합니다.
도움이 되길 바랍니다