본문 바로가기
프론트엔드/웹

글자색/배경색 자동 선택 하기

by 1005ptr 2021. 3. 21.
반응형

색의 3속성은 색상, 채도, 명도 가 있다.

 

2-15) 빛과 색 용어와 의미, 색의 3속성

색은 무채색과 유채색으로 구분합니다. 무채색은 흰색, 회색, 검정색으로 색상과 채도가 없으며, 명도의 차이만을 가지고 있죠. 유채색은 무채색을 제외한 모든 색채를 말하며 색상, 채도, 명도

blog.daum.net

이번에는 이런걸 개발해야된다.

코드 정보를 표현할 때 배경색, 글자색을 부여해서 영역에 표시하는데 사용한다.

배경색과 글자색이 서로 잘 보이도록 자동 선택되며 서로 중복되지 않도록 한다.

 

최초 로직

색상 변경 시 보색을 자동 선택한다.

문제점

  • 보색도 안보이는게 있다.
  • 자동으로 바뀌는 점

해결 방안

  • 보색인데 잘 안보이는 이유는 보색이 서로 중명도와 중명도인 경우 잘 안보인다.
  • 무조건 보색으로 바뀌면 사용자가 선택할수가 없다.

 

개선 로직

1. 색상 변경 시 색 대비가 괜찮으면 그대로 변경한다.

2. 색 대비가 안좋은 경우(명도가 비슷한 경우) 보색으로 변경한다.

3. 보색이 색 대비가 안좋은 경우 해당 색의 명도에 따라 흰색, 검은색으로 변경한다.

 

이렇게 하면

항상 보색인게 아니라 사용자가 선택한 색이 괜찮은 경우 그대로 적용되는 점

 

 

중요한 부분은 색 대비가 좋냐 안좋냐 판단하는 로직이다.

처음에는 명도, 채도, 색계열? 이 비슷한 색을 찾아서 제외한다고 복잡하게 로직을 짰는데

디자이너분의 조언을 들어본 결과 채도나 다른 속성도 결국 명도가 비슷해서 안보이는 것이다~

라고 하여

간단하게 두 색의 명도를 비교하여 그 차이가 85(256/3) 보다 낮은 경우를 색 대비가 안좋다고 하기로 했다.

 

RGB에서는 색의 명도를 뮤 라고 하고 수식은 (R+G+B)/3 이다.

 

 

참고

stackoverflow.com/questions/9018016/how-to-compare-two-colors-for-similarity-difference

 

How to compare two colors for similarity/difference

I want to design a program that can help me assess between 5 pre-defined colors which one is more similar to a variable color, and with what percentage. The thing is that I don't know how to do that

stackoverflow.com

ko.wikipedia.org/wiki/%EB%AA%85%EB%8F%84

 

명도 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 명도(明度, 문화어: 검밝기)는 색상, 채도와 함께 색의 주요한 세 속성 가운데 하나이다. 흔히 명도가 낮으면 '어둡다'고 표현하며, 높으면 '밝다'고 표현한다.

ko.wikipedia.org

ko.wikipedia.org/wiki/%EC%B1%84%EB%8F%84

 

채도

위키백과, 우리 모두의 백과사전. 채도(彩度)는 색상, 명도와 함께 색의 주요한 세가지 속성 중의 하나이다. 색이 보다 선명할수록 채도가 높다고 말하며 회색이나 흰색 또는 검정과 같은 무채색

ko.wikipedia.org

m.blog.naver.com/PostView.nhn?blogId=wlgus6012&logNo=220264068540&proxyReferer=https:%2F%2Fwww.google.com%2F

 

색상대비

색의대비란? 두 가지 이상의 색이 서로 영향을 주어 실제의 색과는 다르게 보여 그 색차이가 강조되는 현상...

blog.naver.com

 

반응형

'프론트엔드 > ' 카테고리의 다른 글

REST Resource Naming Guide  (0) 2023.05.13
웹에서 IP 카메라 스트리밍 하기  (13) 2021.12.09
주석을 작성하고 코드를 작성한다  (0) 2021.03.06
defer 속성  (0) 2021.03.06
Carriage Return(\r)  (0) 2021.03.06

댓글