2012-05-07 47 views
5

我想要在腳本中加載jpg文件來獲取QImage(或者PyQt4中的任何內容)。我一直無法找到任何有關如何將它作爲一個腳本加載一個JPG圖像的信息,很多使用py2exe編譯,但我甚至不能得到這麼多。PyQt4 jpeg/jpg不支持的圖像格式

花一些時間來解決這個問題,我已經跟着幾個事情都無濟於事...... 在我的站點包展望/ PyQt4的/插件/ imageformats文件夾,我有:

qgif4.dll,qico4 .dll文件,qjpeg4.dll,qmng4.dll,qsvg4.dll,qtga4.dll,qtiff4.dll

根據QtGui.QImageReader.supportedImageFormats(),這是我的安裝PyQt4中都可以使用

[ PyQt4.QtCore.QByteArray('bmp'),PyQt4.QtCore.QByteArray('pbm'),PyQt4.QtCore.QByteArray('pgm'),PyQt4.QtCore.QByteArray('png'),PyQt4.QtCore.QByteArray 「p '),PyQt4.QtCore.QByteArray('xbm'),PyQt4.QtCore.QByteArray('xpm')]

我也確保我的qt.conf文件在主python目錄中,它有這個

[路徑]

Prefix = C:/Python27/Lib/site-packages/PyQt4 
Binaries = C:/Python27/Lib/site-packages/PyQt4 

我已經嘗試添加

Plugins = C:/Python27/Lib/site-packages/PyQt4/plugins/imageformats 
Plugins = C:/Python27/Lib/site-packages/PyQt4/plugins 

沒有運氣

我在Windows 7 64b Home Premium上使用PyQt4 4.9.1(都是32b)運行python 2.7.2。

我也試過版本4.8.1和4.8.5(我手邊有)但他們都不支持JPG。我很茫然。我如何獲得這些支持?

+0

奇怪。對於我來說,這是OSX在涉及到使用py2app進行打包時曾經關注的一個問題,但從來沒有在腳本情況下。它總是設法正確地找到插件。 – jdi

+0

哇,它不只是'JPEG'看來PyQt無法加載任何這些'dll'文件。你可以嘗試'插件=插件'?它不應該是完整的路徑。 – Avaris

+0

我給了插件一個嘗試,然後嘗試'/插件','/插件/ imageformats','插件/ imageformats'爲好措施。沒有。 – ooklah

回答

6

有兩個不同的問題,它可能有助於造成這種情況。它看起來像我遇到了兩個。

1st。我以「管理員」身份運行了PyQt4安裝程序,似乎解決了部分問題。所以它需要以管理員身份運行以使所有內容正常工作。

2nd。爲了使所有的插件能夠正確加載,必須先加載QApplication才能加載任何類型的圖像。

所以

app = QtGui.QApplication(sys.argv) 

需要先創建。

我的腳本運行的

def main(): 
    app = QtGui.QApplication(sys.argv) 
    win = window() 
    win.display() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

它,因爲我安裝PyQt4的作爲管理員並沒有改變,但現在工作和JPEG文件加載和一切。

我想要做的是創建一個腳本,它將被一個PyQt4應用程序調用,但它不會自行運行,所以不需要先創建一個QApplcation。這是我遇到了問題#2

參考:http://article.gmane.org/gmane.comp.python.pyqt-pykde/7176/match=jpeg+plugin+not+loading

安裝作爲管理員,總是創建QApplication的,即使你不需要它。

,如果你還只是檢查,看看有什麼空閒的可用:

from PyQt4 import QtGui 
QtGui.QImageReader.supportedImageFormats() 

不會顯示一切,仍需要運行

from PyQt4 import QtGui 
import sys 
app = QtGui.QApplication(sys.argv) 
QtGui.QImageReader.supportedImageFormats() 

這是惱人的追捕,所以希望這對其他人會有幫助。

+1

因此,我剛剛在Windows上使用virtualenvs(將PyQt4從全球站點包複製到envs站點包)中運行 - 我必須創建qt.conf,類似於原始張貼旁邊腳本\ python.exe - 然後一切工作就像它應該! – Strayer

+0

如果有人知道如何在不創建QApplication的情況下加載插件,請在此處添加註釋;對於我們這些只使用QImage作爲實用程序圖像加載類的人來說,這會非常有幫助。 – GaryO

+0

直到我將_Application調用放入__main__中,Mine纔會工作。它在main()中並不適用於QApplication,正如你所展示的那樣。非常奇怪,但消除使用main()修復它給我。 – panofish

相關問題