2017-09-15 41 views
1

이미지를 찾고 배열 내의 첫 번째 이미지와 관련된 다른 이미지를 저장하려고합니다. 그런 다음, 그 이미지를 docx 라이브러리를 사용하여 단어 문서에 넣기를 원합니다. 현재 아래에서 시도한 몇 가지 해결책에도 불구하고 현재 다음과 같은 오류가 표시됩니다. 여기에 코드입니다 :Pyautogui를 사용하여 배열 이미지 저장/검색 (AttributeError : 'Image'객체의 속성에 '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") 

은 제가 오해 해요 알려주세요, 당신은 등

언제나처럼, 코드가 더 파이썬 더 나은 스코프 만들기 위해 도움을 주셔서 감사 어떤 제안을 참조하는 경우 , 진정으로!

답변

0

이 문제를 해결했습니다. 이미지를 디스크에 저장해야했습니다. 여전히 배열을 참조 할 수는 있지만 저장하지 않고 이미지를 참조 할 수는 없습니다. 해결 방법은 다음과 같습니다.

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)