如何在Python 3中将QImage(QPixmap)转换为PIL图像?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python 3中将QImage(QPixmap)转换为PIL图像?相关的知识,希望对你有一定的参考价值。

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

但它似乎在Python3中不起作用。是实现这个方法的方法是Pyhton3还是更简单地使用新方法?

答案

根据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()

Pt和

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()

以上是关于如何在Python 3中将QImage(QPixmap)转换为PIL图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PyQt4 中将 QImage 插入到 NxN 网格布局中?

如何使用 Qt 将可折叠元素(QMenu、QComboBox)渲染到位图缓冲区?

如何在 Qt 中将 tiff 或 pnm 转换为 jpeg

你如何从 sip.voidptr (QImage.constBits()) 到 ctypes void 或 char 指针?

如何将 RGB32 格式的 QImage 转换为 OpenCV::mat?

如何在 PySide 和 Python 3.X 中将字节写入 QDataStream?