Преобразуйте PyQt в изображение PIL

Если Вы плохо знакомы с чтением versioncontrol это:
ПРАКТИЧЕСКОЕ РУКОВОДСТВО Управления исходным кодом

9
задан Justin Ethier 27 August 2010 в 21:16
поделиться

5 ответов

I convert it from QImage to PIL with this code:

img = QImage("/tmp/example.png")
buffer = QBuffer()
buffer.open(QIODevice.ReadWrite)
img.save(buffer, "PNG")

strio = cStringIO.StringIO()
strio.write(buffer.data())
buffer.close()
strio.seek(0)
pil_im = Image.open(strio)

I tried many combinations before getting it to work.

12
ответ дан 4 December 2019 в 13:02
поделиться

Вы можете преобразовать QImage в строку Python:

>>> image = QImage(256, 256, QImage.Format_ARGB32)
>>> bytes = image.bits().asstring(image.numBytes())
>>> len(bytes)
262144

Преобразование из этого в PIL должно быть простым.

0
ответ дан 4 December 2019 в 13:02
поделиться

Другой маршрут:

  1. Загрузить данные изображения в массив numpy ( пример кода с использованием PIL)
  2. Управляйте изображением с помощью numpy, scipy или scikits.image
  3. Загрузите данные в QImage (пример: просмотрите архив scikits.image (связанный в 1) и посмотрите строку 45 qt_plugin.py - извините, stackoverflow не делает 't позвольте мне публиковать больше ссылок)

Как упоминает Вирджил, данные должны быть выровнены по 32 бита (или 4 байта), что означает, что вам нужно не забыть указать шаги на шаге 3 (как показано во фрагменте ).

2
ответ дан 4 December 2019 в 13:02
поделиться
from PyQt4 import QtGui, QtCore
img = QtGui.QImage("greyScaleImage.png")
bytes=img.bits().asstring(img.numBytes())
from PIL import Image
pilimg = Image.frombuffer("L",(img.width(),img.height()),bytes,'raw', "L", 0, 1)
pilimg.show()

Спасибо, Эли Бендерски, ваш код был полезен.

1
ответ дан 4 December 2019 в 13:02
поделиться
#Code for converting grayscale QImage to PIL image

from PyQt4 import QtGui, QtCore
qimage1 = QtGui.QImage("t1.png")
bytes=qimage1.bits().asstring(qimage1.numBytes())
from PIL import Image
pilimg = Image.frombuffer("L",(qimage1.width(),qimage1.height()),bytes,'raw', "L", 0, 1)
pilimg.show()
1
ответ дан 4 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: