pyqt - 从 PIL 到 PySide QImage 的更好方法?

标签 pyqt pyqt4 python-imaging-library pyside

我的应用加载一张图片并在上面打印一些文本。然后我想将打印的图像用作按钮图标上的标签。

问题是我无法将“图像”传递给 QIcon 或任何 PyQt 类。我在网上找到了一种方法,该方法建议将文件作为原始字符串发送到 Qt 的解析器,并从中重建图像。

效果非常好,只是图片是蓝色的。在阅读了一些关于图像处理的内容后,我了解到要修复它,我需要移动和反转所有位,所以

        data = im.convert('RGBA').tostring()
    data = ''.join([''.join(i) for i in zip(data[2::4],data[1::4],data[0::4],data[3::4])])
    qim = QtGui.QImage(data, im.size[0], im.size[1],
                    QtGui.QImage.Format_ARGB32)
    pix = QtGui.QPixmap.fromImage(qim)

我的小 join/zip 魔法似乎有点不合适,我不明白为什么有必要。有一个更好的方法吗?我知道吐出 RGBA 并将其解析为 ARGB 存在一个明显的问题,但我探索了 PIL 和 PyQt 文档无济于事。

最佳答案

PIL(1.6 及更高版本)有一个模块 ImageQt ,这使得将 Image 转换为 QImage 变得非常容易,至少对于 PyQt4 来说是这样。如果你还需要它与 PySide 一起工作,它应该是对 source 的简单更改。

关于pyqt - 从 PIL 到 PySide QImage 的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13302908/

相关文章:

python - 具有自定义插槽的 PyQt5 设计器

html - PySide QTextEdit html 表格宽度

python - PyQt 文档

python - QtSql(来自 PyQT)似乎已损坏

python - 从 Qt Designer 和 PyQt 开始

python - self.exit 和 self.quit 不退出 PyQt 应用程序

windows - 卸载 PyQt5 以安装 PyQt4

python - 交换图像目录中的 R 和 B 颜色 channel 值? Python

python - 运行 pyinstaller 应用程序时导入错误

python - 在 Python 3.6 和 Visual Studio 上安装/使用 Pillow