如何将 8 位颜色的表示形式转换为相应的 python curses 颜色?
How to turn representation of 8-bit colors to corresponding python curses colors?
我正尝试在 python curses 中的终端应用程序中显示低分辨率图像。我使用 numpy
获取图像每个像素的 rgb 颜色。我正在使用以下方法将每个像素更改为相应的 8 位颜色:color = int((r*6/256)*36 + (g*6/256)*6 + (b*6/256) - 1)
并使用 color
作为新的 init_pair
,一切正常,除了颜色,它们甚至都不相似。所以我的问题是:有什么方法可以将 8 位颜色的表示形式转换为 256 python curses 颜色中相应的一种颜色?
我的代码有一部分:
def show_image(h, w, img_arr, window):
for y in range(h):
for x in range(w):
pix = img_arr[y][x]
color = int((pix[0]*6/256)*36 + (pix[1]*6/256)*6 + (pix[2]*6/256) - 1)
curses.init_pair(color, color, color)
window.addstr(10+y, x+1, "#", curses.color_pair(color))
你必须告诉 curses 颜色是什么,例如,使用 init_color
(并且 that 只适用于处理颜色初始化的终端,使用具有 initc
的终端描述)。此外,在 init_pair
中使用颜色值作为对数可能不会像您预期的那样工作。
我正尝试在 python curses 中的终端应用程序中显示低分辨率图像。我使用 numpy
获取图像每个像素的 rgb 颜色。我正在使用以下方法将每个像素更改为相应的 8 位颜色:color = int((r*6/256)*36 + (g*6/256)*6 + (b*6/256) - 1)
并使用 color
作为新的 init_pair
,一切正常,除了颜色,它们甚至都不相似。所以我的问题是:有什么方法可以将 8 位颜色的表示形式转换为 256 python curses 颜色中相应的一种颜色?
我的代码有一部分:
def show_image(h, w, img_arr, window):
for y in range(h):
for x in range(w):
pix = img_arr[y][x]
color = int((pix[0]*6/256)*36 + (pix[1]*6/256)*6 + (pix[2]*6/256) - 1)
curses.init_pair(color, color, color)
window.addstr(10+y, x+1, "#", curses.color_pair(color))
你必须告诉 curses 颜色是什么,例如,使用 init_color
(并且 that 只适用于处理颜色初始化的终端,使用具有 initc
的终端描述)。此外,在 init_pair
中使用颜色值作为对数可能不会像您预期的那样工作。