使用PyQT在Python中将2D整数数组重写为位图



我想使用PyQt将整数数组转换为某种"图片"(我决定在Qt中使用我的应用程序)。我有这样的数组:

Array = [
[0,0,1,0,0],
[0,1,0,1,0],
[1,0,0,0,1],
[0,1,0,1,0],
[0,0,1,0,0]]

现在我想把它重写成图片,用10x10像素的正方形来替换每个整数。我有RGB数组中每个值的定义。更重要的是,这是一种生活游戏,所以每走一步都必须更新,不应该很慢。也许是类似OpenCV的东西?

提前感谢!

干杯,Mateusz

您可以使用QGraphicsScene和QGraphicsView轻松完成上述操作。为了获得良好的性能,您需要在QGraphicsView实例上调用setViewport(QGLWidget())。创建QGraphicsItem的子类以表示数组中的元素。如果需要,您甚至可以设置更改的动画。

如果你确实想要动画,或者正在展示一些进展,比如在康威的《生命的游戏》中,你可能还想看看QTimeLine。

您可以在PyQt*或PySide网站上查找等效的基于python的文档。PyQt和PySide都使用几乎相同的API,因此对于大多数情况,您可以互换使用它们。

* 注意:在撰写本文时,PyQt网站无法访问

您可能应该使用QT的图形库来提高性能。另一种可能更简单的方法是使用PIL(Python Imaging Library)或一些到ImageMagick或MagickWand库的Python绑定(我还没有找到一个好的和最新的),使用NumPy的数组进行计算和操作,并使用PyGame、QT或其他GUI工具包在表面或画布上绘制。

在PIL中有PIL.Image.fromarray(np_array, 'RGBA'),它读取合适的NumPy数组——数据类型通常必须是dtype=int8,形状是(height, width, n_channels)

有关使用ascii字节值的非常简单的图形格式,请参阅NetPBM。

最新更新