【问题标题】:How do I display a PGM file within a QGraphicsView?如何在 QGraphicsView 中显示 PGM 文件?
【发布时间】:2012-07-22 23:27:14
【问题描述】:

我正在尝试使用以下测试应用程序显示 PGM 文件。该代码适用于 PNG 文件,但不适用于 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 文件?

【问题讨论】:

    标签: qt pyqt qgraphicsview qgraphicsscene pgm


    【解决方案1】:

    QImage 支持读取 PGM 文件。是否检查过 img 是否正确加载?

    也许你有 abad 文件,或者名称中的拼写错误,或者权限错误

    【讨论】:

    • 是的,我检查了 img 是否正确加载。 OP 代码是否适用于 PGM 文件?
    【解决方案2】:

    看起来您正在使用 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)
    

    应该适合你。

    【讨论】:

    • 完全有效。实际上,我发现的一个解决方法是首先使用 QIMage 加载文件:qimg = QImage("test.pgm") pixmap = QPixmap.fromImage(qimg) self.scene.addPixmap(pixmap)。但是你的方法更简单。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 2019-02-11
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多