2

我正在尝试使用 matplotlib 生成图形并将其保存到 python-pptx 。一切正常,但是导入 pptx 时图像分辨率很低。(我只是使用StringIO然后add_picture()在 pptx 中添加图像来保存到内存)

当我做 :

some_image_in_memory = StringIO()
plt.savefig(some_image_in_memory)

它工作正常但提供低分辨率图像但是当我这样做时:

plt.savefig(some_image_in_memory, format='svg')

我得到错误:

cannot identify image file <StringIO.StringIO INstamce at ..>

这甚至正确吗?svg 应该保持分辨率,但我无法在 pptx 中阅读此内容。

4

2 回答 2

1

不幸的是,PowerPoint 不直接支持 SVG 格式(我听说这是 MS 和 Adob​​e 之间的地盘问题)。我希望这可以解释您使用format=svg.

其他人似乎对 matplotlib 中的 PNG 格式很幸运。我有点认为这是默认的图像格式,但可能值得一试。

发生在我身上的另一件事是我没有看到您指定要从 matplotlib 保存的图形大小的任何地方。如果它被保存为一个小图像,然后在 PowerPoint 中显示时显着放大,这将产生“颗粒状”外观。

于 2017-11-07T19:43:28.003 回答
1

我通过将dpi值设置为来解决这个问题savefig():ex

plt.savefig(some_image_stream_in_memory, dpi=1200) 
于 2017-11-07T07:22:27.917 回答