Сохранение / извлечение изображений массива с помощью Pyautogui (AttributeError: у объекта 'Image' нет атрибута 'read')
Я пытаюсь найти изображение, а затем сохранить другое изображение относительно первого в массиве. После этого я хочу, чтобы эти изображения помещались в текстовый документ с использованием библиотеки docx. В настоящее время я получаю следующую ошибку, несмотря на несколько разных решений, которые я попробовал ниже. Вот код:
import sys
import PIL
import pyautogui
import docx
import numpy
def grab_paperclip_images():
'''
This'll look at the documents that're on
the current screen, and create images of
each document with a paperclip. I'll be
testing on an unsorted screen first.
'''
image_array = []
clip_array = find_all_objects("WHITE_PAPERCLIP.png")
for item in clip_array:
coordinates = item[0]+45, item[1], 222, item[3]
image_array.append(pyautogui.screenshot(region=coordinates))
return image_array
doc = docx.Document()
images = grab_paperclip_images()
for image in images:
#print image
#yields: [<PIL.Image.Image image mode=RGB size=222x12 at 0x7CC7770>,etc]
#Tried this - no dice
#img = PIL.Image.open(image)
#doc.add_picture(img)
doc.add_picture(image)
doc.save("testDoc.docx")
Пожалуйста, дайте мне знать, что я неправильно понимаю, и если вы видите какие-либо предложения, чтобы сделать код более питонным, лучше ограниченным и т.д.
Как всегда, спасибо за помощь, искренне!
1 ответ
Решение
Выяснил способ обойти это. Я должен был сохранить изображения на диск. Я все еще мог ссылаться на массив, но я не мог ссылаться на изображение, не сохранив его. Вот мой обходной путь:
def grab_paperclip_images():
'''
This'll look at the documents that're on
the current screen, and create images of
each document with a paperclip. I'll be
testing it on an unsorted screen first.
INSPIRATION:
bottom_record = pyautogui.screenshot(
"LAST_RECORD.png",
region=(
last_clip[0],
last_clip[1]+18,
1100,
14
)
)
'''
image_array = []
clip_array = find_all_objects("WHITE_PAPERCLIP.png")
count = 0
for item in clip_array:
coordinates = item[0]+45, item[1], 222, item[3]
filename = "image"+str(count)+".png"
image = pyautogui.screenshot(filename, region=coordinates)
image_array.append(filename)
count += 1
return image_array
doc = docx.Document()
images = grab_paperclip_images()
for image in images:
doc.add_picture(image)
doc.save("dingding2.docx")
delete_all(images)