如何将PIL图像传递给python-pptx中的Add_Picture

Sar*_*nya 6 python python-imaging-library python-pptx

我正在尝试从剪贴板获取图像,并且想将该图像添加到 python-pptx 中。我不想将图像保存在磁盘中。我已经尝试过这个:

from pptx import Presentation
from PIL import ImageGrab,Image
from pptx.util import Inches
im = ImageGrab.grabclipboard()
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
left = top = Inches(1)
pic = slide.shapes.add_picture(im, left, top)
prs.save('PPT.pptx')
Run Code Online (Sandbox Code Playgroud)

但是出现这个错误

File "C:\Python27\lib\site-packages\PIL\Image.py", line 627, in __getattr__
    raise AttributeError(name)
AttributeError: read
Run Code Online (Sandbox Code Playgroud)

这有什么问题吗?

sca*_*nny 1

图像需要采用流(即逻辑文件)对象的形式。因此,您需要首先将其“保存”到内存文件中,可能 StringIO 就是您正在寻找的。

另一个问题提供了一些细节。