2014-05-21 5 views
0

텍스트 색상을 무작위로 생성하여 흰색 배경에 렌더링하고 싶습니다. 문제는 많은 무작위로 생성 된 색상이 흰색과 잘 대조되지 않는다는 것입니다.RGB - 특정 스펙트럼의 색상을 제외하십시오.

현재 난 그냥이 사용

r = lambda: random.randint(0, 255) 
color = Color((r(),r(),r())) 

특정 RGB 양자 택일 색상, 또는 혼합 방지하기 위해 범위를 제거 할 수 밖에 어떤 라이브러리/너 한테이 있는가; 2 개의 RGB 색상을 비교하여 색상이 대조되는지 여부를 결정합니다.

+0

어떤 코드를 사용해 보셨습니까? –

+0

업데이트 된 질문보기 –

+0

두 가지가 아닌 하나의 색상을 만들기위한 코드가 있으므로 비교를 시도하거나 좋은 명암을 정의하는 알고리즘이 있는지 찾아보십시오 (힌트 : 잘 알려져 있고 매우 잘 알려져 있습니다.) 간단한), 또는 자신 만의 파이썬으로 작성하는 방법. –

답변

4

흰색과의 대비를 좋게하려면 R, G, B 색상 중 적어도 하나가 어두운면에 있어야합니다. 나는 내 머리 꼭대기에서 128보다 작은 것을 선택했다. 여기에 내가 할 줄 무엇 : 그들이 쉽게 접근 할 수있어 있도록

from random import randint, shuffle 
color = [randint(0, 255), randint(0, 192), randint(0, 128)] 
shuffle(color) 
color = Color(tuple(color)) 

random colors

첫 번째 줄은 package.name 관용구를 사용하지 않고, 이름 공간에 당신이 random 패키지에서 필요로하는 기능을 가져옵니다.

두 번째 줄은 3 개의 난수 목록을 생성합니다. 첫 번째 부분은 전체 0-255 범위를 다루고 두 번째 부분은 약간 더 어둡고 세 번째 부분은 내가 권장 한 0-128 범위를 포함합니다.

세 번째 줄은 어두운 값의 기본 색이 항상 파란색이 아닐 수 있도록 3 가지 값을 임의로 섞습니다.

네 번째 줄은 목록을 사용할 수있는 색으로 변환합니다. 귀하의 예제에서는 튜플을 사용하는 Color 클래스를 보여주기 때문에 먼저 목록을 튜플로 변환해야한다고 생각했습니다.

+0

해킹이 발생합니다. 감사. –

+0

-1 자신의 입학 허가로 언어를 모르는 사람을위한 코드를 작성하려는 경우 적어도 그것이 어떻게 작동하는지 설명하십시오. –

+0

@LegoStormtroopr 줄 바꿈 설명을 추가했는데 받아 들일 수 있기를 바랍니다. –

3

대신 RGB 구성 요소와 색상을 생성하는, 당신은 또한 당신이 더 많은 직접 강도를 제어 할 수있는 방식으로 생성 할 수 있습니다 : 당신이 색조 채도 값 구성 요소 (the value controls the intensity)와 색상을 생성 할 수 있습니다.

예를 들어, 흰색 배경의 경우 모든 색조를 유지하면서 값을 일부 범위로 제한 할 수 있습니다.

RGB 색상이 필요한 경우, 결국은 HSV를 RGB로 변환하기 위해 Python의 standard colorsys module을 사용할 수 있습니다.

+0

[L * a * b * 색상 공간] (http://en.wikipedia.org/wiki/Lab_color_space)이이 응용 프로그램에서 더 나은 선택 일지 모르지만 나는 비슷한 점을 생각하고있었습니다. 불행히도'colorsys'는 지원하지 않습니다. –

+0

고마워, 내가 살펴볼거야. –

관련 문제