문제
현재 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를 사용하는 것입니다.
제휴하지 않습니다 StackOverflow