我想将图像从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()