
我製作了這個腳本來顯示終端顏色,但我不明白顏色的排列。
這是非常基本的腳本。它只是增加 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)
產生了這個