将PyQt4.QtGui.QImage对象转换为base64 PNG数据

时间:2014-07-25 22:52:51

标签: python qt python-3.x pyqt

如何从PyQt4.QtGui.QImage object获取原始base64 PNG数据?我能找到的唯一方法似乎有帮助bits(),但这只会返回sip.voidptr object,我不知道从那里去哪里。

2 个答案:

答案 0 :(得分:2)

QImage表示图像,而不是图像文件。 QImage对象不能包含PNG,JPG或其他格式。您需要使用QImageQImage::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数组。

我不会写更多,因为这种事情可能会导致崩溃(我现在没有测试数据) - 你能不能以通常的方式加载图像?

相关问题