我是pygame的新手,我正在尝试从RGB565缓冲区创建一个Surface,这是我到目前为止所做的:
def rgb_to_surface(buff):
arr = np.fromstring(buff, dtype=np.uint16).newbyteorder('S')
r = (((arr & 0xF800) >>11)*255.0/31.0).astype(np.uint8)
g = (((arr & 0x07E0) >>5) *255.0/63.0).astype(np.uint8)
b = (((arr & 0x001F) >>0) *255.0/31.0).astype(np.uint8)
arr = np.concatenate((r,g,b))
return pygame.image.frombuffer(arr, (160, 120), 'RGB')
它有效,除了图像是平铺的,任何想法我做错了什么?
答案 0 :(得分:1)
我应该使用column_stack
来获取r g b r g b...
arr = np.column_stack((r,g,b)).flat[0:]