pyqtのウィンドウにビットマップをロードする方法
質問
現在、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を使用することです。
所属していません StackOverflow