如何在Python 3 中将QImage(QPixmap) 转换为PIL 图像?
How to convert QImage(QPixmap) to PIL Image in Python 3?
我想将图像从 QImage 或 Qpixmap class 转换为 PIL 图像。
我发现了这个:Convert PyQt to PIL image
但它似乎在 Python3 中不起作用。是否存在将此实现到 Pyhton3 或更简单地使用新方法的方法?
根据 docs:
The StringIO and cStringIO modules are gone. Instead, import the io
module and use io.StringIO or io.BytesIO for text and data
respectively.
所以解决方案是将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()
我想将图像从 QImage 或 Qpixmap class 转换为 PIL 图像。 我发现了这个:Convert PyQt to PIL image
但它似乎在 Python3 中不起作用。是否存在将此实现到 Pyhton3 或更简单地使用新方法的方法?
根据 docs:
The StringIO and cStringIO modules are gone. Instead, import the io module and use io.StringIO or io.BytesIO for text and data respectively.
所以解决方案是将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()