如何从PyQt4.QtGui.QImage object
获取原始base64 PNG数据?我能找到的唯一方法似乎有帮助bits()
,但这只会返回sip.voidptr object
,我不知道从那里去哪里。
答案 0 :(得分:2)
QImage
表示图像,而不是图像文件。 QImage
对象不能包含PNG,JPG或其他格式。您需要使用QImage
将QImage::save
保存为PNG格式。它可以保存到磁盘上的文件或任何QIODevice
。在这种情况下,QBuffer
是一个方便的IO设备。它将数据存储在QByteArray
中。之后,我们可以使用QByteArray::toBase64
来获得结果。
image = QImage(filename)
data = QByteArray()
buf = QBuffer(data)
image.save(buf, 'PNG')
print data.toBase64()
答案 1 :(得分:-2)
如果要直接访问内存中的数据,则可以使用正确的方法。它是一个C数组,没有关联的python对象,所以它有点棘手。您需要:bits(),depth()和byteCount()的起始地址。 ctypes.string_at可以让你访问那里的数据,你可以使用已知的每像素位数和图像形状传递给一个numpy数组。
我不会写更多,因为这种事情可能会导致崩溃(我现在没有测试数据) - 你能不能以通常的方式加载图像?