Если вы создаете данные самостоятельно, например, используя numpy, я думаю, что самый быстрый способ - это прямой доступ к QImage.Вы можете создать ndarray из объекта буфера QImage.bits (), выполнить некоторую работу с использованием numpy методов и создать QPixmap из QImage, когда вы закончите.Вы также можете читать или изменять существующие QImages таким образом.
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)
Убедитесь, что массив не переживает объект изображения.Если вы хотите, вы можете использовать более сложный тип d, например массив записей для индивидуального доступа к альфа-каналу, красным, зеленым и синим битам (хотя остерегайтесь порядка).
В случае, если нет эффективного способавычислить значения пикселей, используя numpy, вы также можете использовать scipy.weave, чтобы встроить некоторый код C / C ++, который работает с массивом, на который указывает img.bits ().
Если у вас уже есть изображение в формате ARGB,создание QImage из данных, как предлагалось ранее, возможно, проще.