Можно ли как-нить организовать помещение картинки из PIL.Image в QLabel (вернее в QPixmap) без предварительной записи на диск? Уже долго роюсь в интернетах, нашел 2 варианта (понятных), но что-то они не пашут
# 2.7 # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui, QtCore import win32gui, win32con from PIL import Image, ImageGrab class MainWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setFixedSize(760, 170) label = QtGui.QLabel(u'(¬_¬)', self) bbox_section = (875, 636, 1656, 774) screen = ImageGrab.grab(bbox_section) screen = screen.convert("P") #screen.save('test3.gif','GIF') variant = 1 if variant == 1: data = screen.tostring('raw') image = QtGui.QImage(data, screen.size[0], screen.size[1], QtGui.QImage.Format_Indexed8)#Format_ARGB32 pixIM = QtGui.QPixmap.fromImage(image) label.setPixmap(pixIM) else: bytesIM = QtCore.QByteArray() bufferIM = QtCore.QBuffer(bytesIM) bufferIM.open(QtCore.QIODevice.WriteOnly) screen.save(bufferIM, 'PNG') # err :( pixIM = QtGui.QPixmap(bufferIM) label.setPixmap(pixIM) if __name__=="__main__": app = QtGui.QApplication(sys.argv) win_project = MainWindow() win_project.show() sys.exit(app.exec_())
Суть программы такая - необходимо сделать скрин области и поместить его в QLabel.
В первом варианте картинка помещается, но какой-бы формат не выставлял, картинка отображается с искажениями
Второй вариант переделывал С++, но застрял на screen.save(bufferIM, ‘PNG’), ошибка
File "D:\Python27\lib\site-packages\PIL\Image.py", line 1423, in save raise KeyError(ext) # unknown extension KeyError: ''