2017-09-15 8 views
1

J'essaie de localiser une image, puis de stocker une autre image par rapport à la première dans un tableau. Ensuite, je veux que ces images tombent dans un document Word en utilisant la bibliothèque docx. Actuellement, je reçois l'erreur suivante, malgré quelques solutions différentes que j'ai essayées ci-dessous. Voici le code:Stockage/récupération d'images de tableau avec Pyautogui (AttributeError: l'objet 'Image' n'a pas d'attribut 'read')

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") 

S'il vous plaît laissez-moi savoir ce que je suis malentendu, et si vous voyez des suggestions pour rendre le code plus pythonique, mieux scope, etc.

Comme toujours, merci pour l'aide , Cordialement!

Répondre

0

Imaginé un moyen de contourner cela. Je devais enregistrer les images sur le disque. Je pourrais toujours référencer le tableau, mais je ne pourrais pas référencer l'image sans la sauvegarder. Voici ma solution de contournement:

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)