I'm trying to get QImage (or anything in PyQt4, for that matter) to load a jpg file in a script. I haven't been able to find any information on how to get it to load a jpg image as a script, lots for compiled using py2exe but I can't even get that far.
Spending some time to resolve this, I've followed a few things with no available. Looking in my site-packages/PyQt4/plugins/imageformats folder I have:
qgif4.dll, qico4.dll,qjpeg4.dll, qmng4.dll, qsvg4.dll, qtga4.dll, qtiff4.dll
According to QtGui.QImageReader.supportedImageFormats(), this is what my install of pyqt4 can use
[PyQt4.QtCore.QByteArray('bmp'), PyQt4.QtCore.QByteArray('pbm'), PyQt4.QtCore.QByteArray('pgm'), PyQt4.QtCore.QByteArray('png'), PyQt4.QtCore.QByteArray('ppm'), PyQt4.QtCore.QByteArray('xbm'), PyQt4.QtCore.QByteArray('xpm')]
I've also made sure that my qt.conf file is in the main python directory and it has this
[Paths]
Prefix = C:/Python27/Lib/site-packages/PyQt4
Binaries = C:/Python27/Lib/site-packages/PyQt4
I've tried adding
Plugins = C:/Python27/Lib/site-packages/PyQt4/plugins/imageformats
Plugins = C:/Python27/Lib/site-packages/PyQt4/plugins
with no luck
I'm running python 2.7.2, with PyQt4 4.9.1(both 32b), on a windows 7 64b Home Premium.
I've also tried version 4.8.1 and 4.8.5 (which I had on hand) but none of them supported jpg either. I'm at a loss. How do I get these back to being supported?
There are two different issues it seems that can contribute to causing this. And it looks like I ran into both.
1st. I gave running the PyQt4 installer 'as administrator' which seems to have solved part of the issue. So it needs to be run as administrator to get everything to work correctly.
2nd. In order for all the plugins to load properly, the QApplication must be made first before any kind of image is loaded.
so
app = QtGui.QApplication(sys.argv)
needs to be created first.
My scripts run as
def main():
app = QtGui.QApplication(sys.argv)
win = window()
win.display()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
which hasn't changed since I installed PyQt4 as an administrator but now works and loads jpegs and everything else.
What I was trying to do, was create a script that was going to be called by a PyQt4 application but it wouldn't be run by itself, so there was no need to create a QApplcation first. Which is where I ran into issue #2
For reference: http://article.gmane.org/gmane.comp.python.pyqt-pykde/7176/match=jpeg+plugin+not+loading
Install as administrator and always create the QApplication, even if you don't need it.
also if you are just checking to see what's available in idle:
from PyQt4 import QtGui
QtGui.QImageReader.supportedImageFormats()
won't show everything, still need to run
from PyQt4 import QtGui
import sys
app = QtGui.QApplication(sys.argv)
QtGui.QImageReader.supportedImageFormats()
This was annoying to track down, so hopefully this will be helpful to others.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With