根据docs:
pygame.surfarray.blit_array()
直接从数组值blit blit_array(Surface,array) - >无
直接复制来自的值 数组到Surface ...中 数组的大小必须与 Surface并将完全替换所有像素值。只有整数, 接受ascii字符和记录数组。
我的代码如下,
surf = pygame.display.set_mode( ( width, height ) )
pixels = [
# width * height * 3
[(255,241,232),(255,241,232),...],
[(255,241,232),(255,241,232),...],
...
]
surfarray.blit_array( surf, pixels )
运行它,我收到错误ValueError: list object does not export an array buffer
。
我做错了什么?
这里是完整的错误消息,
line 23, in <module>
surfarray.blit_array( surf, pixels )
line 81, in blit_array
return numpysf.blit_array (surface, array)
line 82, in blit_array
return array_to_surface(surface, array)
ValueError: list object does not export an array buffer
答案 0 :(得分:2)
pygame.surfarray.blit_array()
的数组必须是任何数组对象,可以是np.array或数组。在这种情况下,由列表组成的数组不起作用,但您可以这样做:
import numpy as np
pixels = np.array([
[(255,241,232),(255,241,232)],
[(255,241,232),(255,241,232)]
])
#rest the same...
将您的列表数组转换为np.array
在pygame.surfarray的文档中,它指出:
在pygame曲面和数组之间转换像素数据的函数。 只有当pygame可以使用外部时,此模块才会起作用 Numpy包。