如何在 PyQt 中保存 'jpeg' 格式的 Qimage?
How to save Qimage with 'jpeg' format in PyQt?
我的平台是Windows7
,Python3.4
,PyQt5
.
我发现我无法以 jpeg
.
格式保存 QImage
对象
>>> from PyQt5 import QtCore, QtGui
>>> i = QtGui.QImage()
>>> i.load(r"C:\Users\paleneutron\Pictures\Capture4.PNG")
True
>>> i.save(r"C:\Users\paleneutron\Pictures\hehe.jpg")
False
>>> i.save(r"C:\Users\paleneutron\Pictures\hehe.jpg",format = 'jpeg')
False
>>> i.save('hehe.png')
True
>>> i.save('hehe.bmp')
True
>>> i.save('hehe.jpg')
False
>>> i.save('hehe.jpeg')
False
在this page中,jpeg
支持读写。
为什么我这样做时会出错?
编辑
我检查支持的格式作为评论:
>>> QtGui.QImageWriter.supportedImageFormats()
[PyQt5.QtCore.QByteArray(b'bmp'), PyQt5.QtCore.QByteArray(b'pbm'), PyQt5.QtCore.QByteArray(b'pgm'), PyQt5.QtCore.QByteArray(b'png'), PyQt5.QtCore.QByteArray(b'ppm'), PyQt5.QtCore.QByteArray(b'xbm'), PyQt5.QtCore.QByteArray(b'xpm')]
问题就在这里,jpeg
不见了!
但是我在 C:\Python34\Lib\site-packages\PyQt5\plugins\imageformats
中有 qjpeg.dll
。我应该怎么做才能在我的程序中启用 jpeg
?
谢谢切尔诺贝利!
我偶然得到了解决方案。
我在我的完整程序中尝试了测试代码,它运行良好。因为PyQt
的很多特性在使用前必须先构造一个QGuiApplication
。
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
print(QtGui.QImageWriter.supportedImageFormats())
现在我们得到了完整的支持格式:
[PyQt5.QtCore.QByteArray(b'bmp'), PyQt5.QtCore.QByteArray(b'ico'), PyQt5.QtCore.QByteArray(b'jpeg'), PyQt5.QtCore.QByteArray(b'jpg'), PyQt5.QtCore.QByteArray(b'pbm'), PyQt5.QtCore.QByteArray(b'pgm'), PyQt5.QtCore.QByteArray(b'png'), PyQt5.QtCore.QByteArray(b'ppm'), PyQt5.QtCore.QByteArray(b'tif'), PyQt5.QtCore.QByteArray(b'tiff'), PyQt5.QtCore.QByteArray(b'wbmp'), PyQt5.QtCore.QByteArray(b'xbm'), PyQt5.QtCore.QByteArray(b'xpm')]
我的平台是Windows7
,Python3.4
,PyQt5
.
我发现我无法以 jpeg
.
QImage
对象
>>> from PyQt5 import QtCore, QtGui
>>> i = QtGui.QImage()
>>> i.load(r"C:\Users\paleneutron\Pictures\Capture4.PNG")
True
>>> i.save(r"C:\Users\paleneutron\Pictures\hehe.jpg")
False
>>> i.save(r"C:\Users\paleneutron\Pictures\hehe.jpg",format = 'jpeg')
False
>>> i.save('hehe.png')
True
>>> i.save('hehe.bmp')
True
>>> i.save('hehe.jpg')
False
>>> i.save('hehe.jpeg')
False
在this page中,jpeg
支持读写。
为什么我这样做时会出错?
编辑
我检查支持的格式作为评论:
>>> QtGui.QImageWriter.supportedImageFormats()
[PyQt5.QtCore.QByteArray(b'bmp'), PyQt5.QtCore.QByteArray(b'pbm'), PyQt5.QtCore.QByteArray(b'pgm'), PyQt5.QtCore.QByteArray(b'png'), PyQt5.QtCore.QByteArray(b'ppm'), PyQt5.QtCore.QByteArray(b'xbm'), PyQt5.QtCore.QByteArray(b'xpm')]
问题就在这里,jpeg
不见了!
但是我在 C:\Python34\Lib\site-packages\PyQt5\plugins\imageformats
中有 qjpeg.dll
。我应该怎么做才能在我的程序中启用 jpeg
?
谢谢切尔诺贝利!
我偶然得到了解决方案。
我在我的完整程序中尝试了测试代码,它运行良好。因为PyQt
的很多特性在使用前必须先构造一个QGuiApplication
。
from PyQt5 import QtCore, QtGui, QtWidgets
import sys
app = QtWidgets.QApplication(sys.argv)
print(QtGui.QImageWriter.supportedImageFormats())
现在我们得到了完整的支持格式:
[PyQt5.QtCore.QByteArray(b'bmp'), PyQt5.QtCore.QByteArray(b'ico'), PyQt5.QtCore.QByteArray(b'jpeg'), PyQt5.QtCore.QByteArray(b'jpg'), PyQt5.QtCore.QByteArray(b'pbm'), PyQt5.QtCore.QByteArray(b'pgm'), PyQt5.QtCore.QByteArray(b'png'), PyQt5.QtCore.QByteArray(b'ppm'), PyQt5.QtCore.QByteArray(b'tif'), PyQt5.QtCore.QByteArray(b'tiff'), PyQt5.QtCore.QByteArray(b'wbmp'), PyQt5.QtCore.QByteArray(b'xbm'), PyQt5.QtCore.QByteArray(b'xpm')]