Как добавить изображение из списка в Python с помощью DOCX? - PullRequest
0 голосов
/ 09 октября 2019

Я написал код, который делает снимок экрана, который я хочу вставить в текстовый документ, используя docx.

Пока что мне нужно сохранить изображение в виде файла png. Соответствующая часть моего кода:

from docx import Document
import pyautogui
import docx

doc = Document()

images = []

img = pyautogui.screenshot(region = (some region))

images.append(img)
img.save(imagepath.png)

run =doc.add_picture(imagepath.png)
run

Я бы хотел добавить изображение без его сохранения. Возможно ли это сделать с помощью docx?

1 Ответ

1 голос
/ 10 октября 2019

Да, согласно add_picture - Объекты документа - документация python-docx 0.8.10 , add_picture также может импортировать данные из потока.

Согласно Снимок экранаФункции - документация PyAutoGUI 1.0.0 , screenshot() создает объект изображения PIL / Pillow, который может быть save() 'd с BytesIO() в качестве места назначения для создания потока данных сжатого изображения в памяти .

Итак, это будет:

import io
imdata = io.BytesIO()

img.save(imdata, format='png')
imdata.seek(0)

doc.add_picture(imdata)
del imdata    # cannot reuse it for other pictures, you need a clean buffer each time
              # can use .truncate(0) then .seek(0) instead but this is probably easier
...