터미널 색상 시퀀스를 인간 친화적인 색상 등급으로 어떻게 배열합니까?

터미널 색상 시퀀스를 인간 친화적인 색상 등급으로 어떻게 배열합니까?

터미널 색상을 표시하기 위해 이 스크립트를 만들었으나 색상 배열이 이해가 되지 않습니다.

다음은 매우 기본적인 스크립트입니다. 256색 팔레트의 색상 코드를 증가시키고 6행으로 정렬합니다.

#!/bin/env python3

def fg(n):
    assert -1 < n < 256, f"{n} value outside (0,255)"
    return f"\x1b[38;5;{n}m"

def bg(n):
    assert -1 < n < 256, f"{n} value outside (0,255)"
    return f"\x1b[48;5;{n}m"
    
RESET = "\x1b[0m"

print("The 1st 16 colors")
for i in range(0,16):
    print(f"{fg(0)}{bg(i)}[{i:03d}]{bg(0)}" , end = RESET)

print("\nthe rest\n")
for i in range(16,255,6):
    for j in range(0,6):
        print(f"{fg(0)}{bg(i + j)}[{i + j:03d}]", end = RESET)
    print()

이 그리드를 출력하면 더 좋을 수 있다고 생각합니다.

여기에 이미지 설명을 입력하세요

하지만 좀 더 인간 친화적인 저택에서 이것을 어떻게 마련할 수 있는지 알고 싶습니다. 색상이 동일한 색조의 등급인 아래 그리드와 유사한 것입니다. 그렇게 하는 과정이 있나요?

여기에 이미지 설명을 입력하세요

이것의 목적은 단말 코딩에 적용할 수 있는 컬러 그레이딩 기능을 가질 수 있도록 하는 것입니다.

답변1

@DavidPostill 의견을 바탕으로 RGB 색상 블록의 레이어를 보고 있다는 것을 이해했습니다. 따라서 이 답변은 내 질문에 부분적으로 답변합니다. 그러나 각 색상의 값을 여러 목록으로 선별해야 했으며, 이를 블록에서 2가지 색상을 가져와 그 사이의 톤을 계산할 수 있는 함수로 캡슐화하는 편이 낫습니다.

색상 블록을 시각화하기 위해 각 모서리에 해당 터미널 색상 코드를 표시한 그래픽이 있습니다.

여기에 이미지 설명을 입력하세요

나는 임의의 숫자에서 다른 숫자로 선을 그리면 색상 그라데이션이 제공된다는 것을 깨달았습니다. 흰색(231)의 반대쪽 모서리는 검정색(16)이 됩니다.

이러한 방식으로 터미널 색상 그리드를 재배열하면 각 레이어가 위의 3D 블록 조각(왼쪽에서 오른쪽으로 이동)임을 더 쉽게 알 수 있으며 이제 이 평평한 블록 전체에 걸쳐 색상을 플롯할 수 있는 방법이 분명해집니다.

여기에 이미지 설명을 입력하세요

이 코드를 원래 코드에 추가합니다.

def print_color_range(name, clist):
    rangelen = len(clist)
    fore = fg(0) # black pen
    for i in range(rangelen):
        code = clist[i]
        back = bg(clist[i])
        print(f"{fore}{back}[{clist[i]:03d}]",  end = RESET)
    print(name)

WHITE_BLACK = [231,188,145,102,59,16]
WHITE_RED_BLACK     = [231,224,217,210,203,196,160,124,88,52,16]
WHITE_BLUE_BLACK    = [231,189,147,105,63,21,20,19,18,17,16]
WHITE_GREEN_BLACK   = [231,194,157,120,83,46,40,34,28,22,16]
WHITE_CYAN_BLACK    = [231,195,159,123,87,51,44,37,30,23,16]
WHITE_MAGENTA_BLACK = [231,225,219,213,207,201,164,127,90,53,16]
WHITE_YELLOW_BLACK = [231,230,229,228,227,226,184,142,100,58,16]
GREYS = [231,255,254,253,252,251,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,232,16]

print_color_range('reds', WHITE_RED_BLACK )
print_color_range('yellows', WHITE_YELLOW_BLACK    )
print_color_range('greens', WHITE_GREEN_BLACK  )
print_color_range('cyans', WHITE_CYAN_BLACK   )
print_color_range('blues', WHITE_BLUE_BLACK   )
print_color_range('magentas', WHITE_MAGENTA_BLACK)
print_color_range('white to black', WHITE_BLACK)
print_color_range('grays', GREYS)

이것을 생산했다

여기에 이미지 설명을 입력하세요

관련 정보