2012-07-24 71 views
0

我正在嘗試使用以下測試應用程序顯示PGM文件。該代碼適用於PNG文件,但不適用於PGM:如何在QGraphicsView中顯示PGM文件?

import sys 
from PyQt4.QtGui import * 
from PyQt4.QtCore import * 
import Image 
import ImageQt 

class MyView(QGraphicsView): 
    def __init__(self): 
     QGraphicsView.__init__(self) 

     self.scene = QGraphicsScene(self) 
     self.setScene(self.scene) 

     img = Image.open('test.pgm') # works with 'test.png' 
     self.imgQ = ImageQt.ImageQt(img) 
     pixmap = QPixmap.fromImage(self.imgQ) 
     self.scene.addPixmap(pixmap) 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    view = MyView() 
    view.show() 
    sys.exit(app.exec_()) 

如何在QGraphicsView中顯示PGM文件?

回答

0

QImage支持讀取PGM文件。你有沒有檢查過img是否正確加載?

也許你已經阿巴德文件,或名稱中的一個錯字,或錯誤的權限

+0

是的我檢查過img是否正確加載。 OP代碼是否適用於PGM文件? – itISiBOWMAN 2012-07-25 20:55:40

0

看起來你正在使用PIL打開圖像,轉換爲QImage的,然後將其轉換成一個QPixmap的。

是否有任何理由不能將PGM直接加載到QPixmap中並避免PIL?

更換

img = Image.open('test.pgm') # works with 'test.png' 
self.imgQ = ImageQt.ImageQt(img) 
pixmap = QPixmap.fromImage(self.imgQ) 
self.scene.addPixmap(pixmap) 

pixmap = QPixmap('test.pgm') 
self.scene.addPixmap(pixmap) 

應該爲你工作。

+0

完全有效。其實我找到的工作是首先使用QIMage加載文件: 'qimg = QImage(「test.pgm」) pixmap = QPixmap.fromImage(qimg) self.scene.addPixmap(pixmap)'。 但是你的方法更簡單。謝謝。 – itISiBOWMAN 2012-07-25 20:48:51