【问题标题】:How to convert QImage(QPixmap) to PIL Image in Python 3?如何在 Python 3 中将 QImage(QPixmap) 转换为 PIL Image?
【发布时间】:2017-11-14 15:47:55
【问题描述】:

我想将图像从 QImage 或 Qpixmap 类转换为 PIL 图像。 我发现了这个:Convert PyQt to PIL image

但它似乎在 Python3 中不起作用。是否存在将其实现到 Pyhton3 或更简单地使用新方法的方法?

【问题讨论】:

    标签: python pyqt pyqt4 python-imaging-library pyqt5


    【解决方案1】:

    根据docs

    StringIO 和 cStringIO 模块消失了。相反,导入 io 模块并将 io.StringIO 或 io.BytesIO 用于文本和数据 分别。

    所以解决办法是把cStringIO.StringIO转换成io.BytesIO

    PyQt5:

    import io
    from PIL import Image
    from PyQt5.QtGui import QImage
    from PyQt5.QtCore import QBuffer
    
    img = QImage("image.png")
    buffer = QBuffer()
    buffer.open(QBuffer.ReadWrite)
    img.save(buffer, "PNG")
    pil_im = Image.open(io.BytesIO(buffer.data()))
    pil_im.show()
    

    PyQt4:

    import io
    from PIL import Image
    from PyQt4.QtGui import QImage
    from PyQt4.QtCore import QBuffer
    
    img = QImage("image.png")
    buffer = QBuffer()
    buffer.open(QBuffer.ReadWrite)
    img.save(buffer, "PNG")
    pil_im = Image.open(io.BytesIO(buffer.data()))
    pil_im.show()
    

    【讨论】:

    • @eyllanesc 你会如何在 PyQt4 中做到这一点?
    • @LironLavi 我已经用 python3 展示了 PyQt4 的代码,对于 python2 你应该使用问题中显示的链接
    • 在不再需要 buffer.close() 之后,我也会添加它。
    猜你喜欢
    • 1970-01-01
    • 2016-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    相关资源
    最近更新 更多