擅长:python、mysql、java
<p>如果您自己创建数据,例如使用numpy,我认为最快的方法是直接访问一个QImage。可以从缓冲区对象QImage.bits()创建ndarray,使用numpy方法执行一些工作,完成后从QImage创建QPixmap。您也可以通过这种方式读取或修改现有的QImages。</p>
<pre><code>import numpy as np
from PySide.QtGui import QImage
img = QImage(30, 30, QImage.Format_RGB32)
imgarr = np.ndarray(shape=(30,30), dtype=np.uint32, buffer=img.bits())
# qt write, numpy read
img.setPixel(0, 0, 5)
print "%x" % imgarr[0,0]
# numpy write, qt read
imgarr[0,1] = 0xff000006
print "%x" % img.pixel(1,0)
</code></pre>
<p>请确保数组不比图像对象活得长。如果需要,可以使用更复杂的数据类型,例如记录数组,用于单独访问alpha、red、green和blue位(但要注意endianess)。</p>
<P>如果没有使用NUMPY计算像素值的有效方法,那么也可以使用SyPy.WeaveIn将一些在数组IMG.BITSH()点上运行的C/C++代码内联到。</p>
<p>如果已经有了ARGB格式的图像,那么按照前面的建议从数据创建QImage可能更容易。</p>