【发布时间】:2018-09-12 09:13:44
【问题描述】:
我有这个 PySide2 代码,它可以在带有 Python 2.7 的 Linux 上运行
from PySide2.QtCore import QBuffer, QByteArray
...
image = self.clipboard.image()
ba = QByteArray()
buffer = QBuffer(ba)
buffer.open(QIODevice.WriteOnly)
image.save(buffer, "PNG")
return bytes(buffer.data())
但在带有 Python 3.6 的 Windows 上,它在这里失败了:
File "C:\....foo.py", line 93, in image_to_png
return bytes(buffer.data())
例外:
TypeError: 'bytes' object cannot be interpreted as an integer
以字节形式获取 PNG 的最简单方法是什么?
我想避免创建一个临时文件,因为这个上下文不需要它。
(我使用 PySide2,但如果您认为它更有意义,我可以切换到不同的 python-QT 绑定。如果您认为,请发表评论)
【问题讨论】:
-
您只是将旧代码转换为在 Python 3 上运行,还是需要同时在 2.7 和 3.6 上运行?
-
在 Python 3.6 上,
buffer.data()的类型是什么? -
@PM2Ring 到目前为止,相同的代码库适用于 2.7 和 3.6。如果能保持这种状态(至少几个月),那就太好了。
标签: python pyqt pyside pyside2