質問

現在、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は編集用に最適化されています(そのため、画像データを保持するために使用しました)。

窓に表示したい写真を生成する複雑なアルゴリズムがあります。それらはかなり速く作成されるので、ユーザーにとってはアニメーションのように見えます(15歳以上、20歳以上が1秒間になる可能性があります)。その後、qpixmapsまたはqimagesを使用する必要がありますか?

役に立ちましたか?

解決

このようなものを試してみてください。使用できます 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_())

他のヒント

に回します この議論, 、最速の方法は、グラフィックカードのパフォーマンスに恩恵を受けるためにGlpainterを使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top