我试图在我的终端应用程序构建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
(并且只适用于处理颜色初始化的终端,使用具有initc
的终端描述)。此外,使用颜色值作为init_pair
中的对号可能不会按预期工作。