문제

현재 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의 빠른 GUI 프로그래밍에 따르면 :

PYQT의 문서에 따르면 QPIXMAPS는 화면 디스플레이에 최적화되어 있으며 (따라서 빠르게 그리기) QIMages는 편집에 최적화됩니다 (이는 이미지 데이터를 보유하는 데 사용한 이유).

창에 보여주고 싶은 사진을 생성하는 복잡한 알고리즘이 있습니다. 그들은 꽤 빨리 만들어 질 것이므로 사용자에게는 애니메이션처럼 보일 것입니다 (초당 15+, 20+가있을 수 있음). 그런 다음 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