簡體   English   中英

如何在python-pptx中將PIL圖像傳遞給Add_Picture

[英]How to pass PIL image to Add_Picture in 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')

但是得到這個錯誤

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

這有什么問題?

這對我有用

import io
import PIL
from pptx import Presentation
from pptx.util import Inches

# already have a PIL.Image as image
prs = Presentation()
blank_slide = prs.slide_layout[6]
left = top = Inches(0)

# I had this part in a loop so that I could put one generated image per slide
image: PIL.Image = MyFunctionToGetImage()
slide = prs.slides.add_slide(blank_slide)
with io.BytesIO() as output:
    image.save(output, format="GIF")
    pic = slides.add_slide(output, left, top)
# end loop
prs.save("my.pptx")

圖像需要采用流(即邏輯文件)對象的形式。 所以你需要先將它“保存”到一個內存文件中,可能StringIO就是你要找的東西。

這個問題提供了一些細節。

如果你有一個 img 作為字節,試試這個

    print(type(img)) #<class 'bytes'>       
    img_as_file = io.BytesIO()
    img_as_file.write(img)
    slide.shapes.add_picture(img_as_file,left,top)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM