PIL 可以使用 pyqt4 资源文件打开图像吗?
Posted
技术标签:
【中文标题】PIL 可以使用 pyqt4 资源文件打开图像吗?【英文标题】:can PIL open an image using pyqt4 resource file? 【发布时间】:2012-12-13 01:28:51 【问题描述】:PIL可以用pyqt4资源文件打开图片吗?
from PIL import Image, ImageWin
import res_rc #resource file
image = Image.open(":/images/image.png")
dim = ImageWin.Dib(image)
我收到了这个错误
IOError: [Errno 22] invalid mode ('rb') or filename :/images/image.png'
【问题讨论】:
你能得到一个类似文件的资源数据吗? 我也不知道。如果可能的话,我只想将图像放入 pyqt4 资源文件,而不是将其分离到图像文件中。因此用户无法编辑或删除图像文件。 如果你能得到一个类似文件的文件就很容易了,所以先做吧。 你的字面意思是来自资源文件,还是来自资源对象代码?如果是前者,则只需解析 XML 文件即可。如果是后者,您可以访问 PyQt 模块,因此使用QPixMap
加载资源并将其转换为与 PIL 一起使用。
【参考方案1】:
要从资源中读取图像文件,请使用 QFile 打开它并将原始数据传递给 PIL 可以使用的类文件对象:
from PyQt4.QtCore import QFile
from cStringIO import StringIO
from PIL import Image, ImageWin
import res_rc
stream = QFile(':/images/image.png')
if stream.open(QFile.ReadOnly):
data = stream.readAll()
stream.close()
image = Image.open(StringIO(data))
dim = ImageWin.Dib(image)
请注意,资源被设计为编译到应用程序中,因此它们是严格只读的。
【讨论】:
以上是关于PIL 可以使用 pyqt4 资源文件打开图像吗?的主要内容,如果未能解决你的问题,请参考以下文章