matplotlib를 사용하여 그래프를 만든 다음 이미지 파일을 디스크에 저장하지 않고 python-pptx를 사용하여 ppt 파일에 저장하려고합니다.matplotlib와 함께 사용할 때 python-pptx가 StringIo 파일 형식을 허용하지 않습니다.
나는 add_picture()
객체와 같은 파일을 허용하지만 여전히 난이 오류가 얻을 것을 볼 수 파이썬 PPTX의 documentation 표시되는 경우이 아래에있는 내 코드
File "a.py", line 39, in <module>
pic = slide.shapes.add_picture(image_stream, left, top)
File "/usr/local/lib/python2.7/dist-packages/pptx/shapes/shapetree.py", line 496, in add_picture
image_part, rId = self.part.get_or_add_image_part(image_file)
File "/usr/local/lib/python2.7/dist-packages/pptx/parts/slide.py", line 42, in get_or_add_image_part
image_part = self._package.get_or_add_image_part(image_file)
File "/usr/local/lib/python2.7/dist-packages/pptx/package.py", line 50, in get_or_add_image_part
return self._image_parts.get_or_add_image_part(image_file)
File "/usr/local/lib/python2.7/dist-packages/pptx/package.py", line 161, in get_or_add_image_part
image_part = ImagePart.new(self._package, image)
File "/usr/local/lib/python2.7/dist-packages/pptx/parts/image.py", line 44, in new
partname = package.next_image_partname(image.ext)
File "/usr/local/lib/python2.7/dist-packages/pptx/util.py", line 136, in get_prop_value
value = f(obj)
File "/usr/local/lib/python2.7/dist-packages/pptx/parts/image.py", line 238, in ext
format = self._format
File "/usr/local/lib/python2.7/dist-packages/pptx/parts/image.py", line 273, in _format
return self._pil_props[0]
File "/usr/local/lib/python2.7/dist-packages/pptx/util.py", line 136, in get_prop_value
value = f(obj)
File "/usr/local/lib/python2.7/dist-packages/pptx/parts/image.py", line 282, in _pil_props
pil_image = PIL_Image.open(stream)
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 2572, in open
% (filename if filename else fp))
IOError: cannot identify image file <StringIO.StringIO instance at 0x7f30d72a92d8>
입니다 :
import matplotlib.pyplot as plt
from StringIO import StringIO
from pptx import Presentation
from pptx.util import Inches
image_stream = StringIO()
# plot a simple graph
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.ylabel('some numbers')
# saving image file from matplotlib to memory
plt.savefig(image_stream)
prs = Presentation()
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
left = top = Inches(1)
## this line throws error, but why ????????
pic = slide.shapes.add_picture(image_stream, left, top)
prs.save('test.pptx')
무엇 나는 실종 됐어?
매력처럼 작동합니다. 고마워요. :) – anekix
내가 가지고있는 또 하나의 문제는 ppt에 저장되는 이미지가 저해상도이지만 디스크에 저장할 때 고해상도 이미지를 얻는 것입니다. 포맷 관련 일 수 있습니까? 나는'forat = 'svg''을 add_picture()에 전달하려고했지만 위와 같은 오류가 발생합니다. – anekix
그건 정말 별개의 질문입니다. @anekix. 'python-pptx'태그와 함께 게시하면 알 수 있습니다. 아마도 'python-pptx .add_picture()와 같이 저해상도 이미지를 생성합니다.' – scanny