Pillow/Tests/test_image_toqimage.py

74 lines
1.6 KiB
Python

from helper import unittest, PillowTestCase, hopper
from test_imageqt import PillowQtTestCase
from PIL import ImageQt
if ImageQt.qt_is_installed:
from PIL.ImageQt import QImage, QPixmap
try:
from PyQt5 import QtGui
except (ImportError, RuntimeError):
try:
from PyQt4 import QtGui
except (ImportError, RuntimeError):
from PySide import QtGui
class TestToQImage(PillowQtTestCase, PillowTestCase):
def test_sanity(self):
PillowQtTestCase.setUp(self)
for mode in ('1', 'RGB', 'RGBA', 'L', 'P'):
data = ImageQt.toqimage(hopper(mode))
self.assertIsInstance(data, QImage)
self.assertFalse(data.isNull())
# Test saving the file
tempfile = self.tempfile('temp_{0}.png'.format(mode))
data.save(tempfile)
def test_segfault(self):
PillowQtTestCase.setUp(self)
app = QtGui.QApplication([])
ex = Example()
if ImageQt.qt_is_installed:
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
img = hopper().resize((1000,1000))
qimage = ImageQt.ImageQt(img)
pixmap1 = QtGui.QPixmap.fromImage(qimage)
hbox = QtGui.QHBoxLayout(self)
lbl = QtGui.QLabel(self)
# Segfault in the problem
lbl.setPixmap(pixmap1.copy())
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
unittest.main()