2

現在、PyQtウィンドウに表示したいPILイメージがあります。これは簡単なことだと思いますが、その方法はどこにも見つかりません。誰かが私にこれを手に入れてもらえますか?これが私が現在持っているウィンドウのコードです:

import sys
from PyQt4 import QtGui

class Window(QtGui.QWidget):
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Window')


app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

編集:QtとPythonを使用したRapid Guiプログラミングによると:

PyQtのドキュメントによると、QPixmapはオンスクリーンディスプレイ用に最適化されており(描画が高速)、QImagesは編集用に最適化されています(そのため、画像データを保持するために使用しています)。

ウィンドウに表示したい画像を生成する複雑なアルゴリズムがあります。それらは非常に高速に作成されるため、ユーザーにはアニメーションのように見えます(1秒あたり15以上、20以上の場合があります)。次に、QPixmapsまたはQImagesを使用する必要がありますか?

4

2 に答える 2

2

このようなものを試してみてください。http://svn.effbot.org/public/stuff/sandbox/pil/ImageQt.pyを使用して任意のpil画像をqimageに変換できます

import sys
from PyQt4 import QtGui
from PIL import Image

def get_pil_image(w, h):
    clr = chr(0)+chr(255)+chr(0)
    im = Image.fromstring("RGB", (w,h), clr*(w*h))
    return im

def pil2qpixmap(pil_image):
    w, h = pil_image.size
    data = pil_image.tostring("raw", "BGRX")
    qimage = QtGui.QImage(data, w, h, QtGui.QImage.Format_RGB32)
    qpixmap = QtGui.QPixmap(w,h)
    pix = QtGui.QPixmap.fromImage(qimage)
    return pix

class ImageLabel(QtGui.QLabel):
    def __init__(self, parent=None):
        QtGui.QLabel.__init__(self, parent)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Window')

        self.pix = pil2qpixmap(get_pil_image(50,50))
        self.setPixmap(self.pix)

app = QtGui.QApplication(sys.argv)
imageLabel = ImageLabel()
imageLabel.show()
sys.exit(app.exec_())
于 2009-11-12T05:32:46.243 に答える
1

この議論を振り返ると、最速の方法は、グラフィックカードのパフォーマンスを活用するためにGLPainterを使用することです。

于 2009-11-11T07:53:12.253 に答える