Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to use ImageQt

I would like to use ImageQT so I can do image manipulation with the Python Image Library (PIL) and render the result using Qt4. I have a short test routine that reads the using PIL.Image.open, converts it using ImageQT and opens a dialog using QT. If I just use Qt to read the image, it works. What am I missing?

#!/usr/bin/python3.3
import sys
from PIL import Image
from PIL.ImageQt import ImageQt
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QImage

app = QtGui.QApplication(sys.argv)
# added initialization after first suggestion below
QtGui.QImageReader.supportedImageFormats()

im = Image.open('test.gif')
image = ImageQt(im)
pixmap = QtGui.QPixmap(image)
# pixmap = QtGui.QPixmap('test.gif')

widget = QtGui.QWidget()
hbox = QtGui.QHBoxLayout(widget)
lbl = QtGui.QLabel(widget)
lbl.setPixmap(pixmap)
hbox.addWidget(lbl)
widget.setLayout(hbox)
widget.show()        
sys.exit(app.exec_())

test.gif
(source: sjs at www.sonic.net)

Note: added additional QtGui initialization after first suggestion. result is still same.

like image 243
steven smith Avatar asked Oct 28 '25 18:10

steven smith


1 Answers

The problem with the example is that it is attempting to convert a QImage to a QPixmap by passing it directly to the QPixmap constructor, which isn't supported.

Instead, you need to do this:

im = Image.open('test.gif')
image = ImageQt(im)
pixmap = QtGui.QPixmap.fromImage(image)
like image 196
ekhumoro Avatar answered Oct 31 '25 12:10

ekhumoro



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!