7

我正在使用 matplotlib 生成一个绘图,然后使用 matplotlib.pyplot.savefig 将其保存到 PNG 文件中。

一切正常,但文件大小非常大(大约 120Kb)。

之后我可以使用 ImageMagik(通过 shell)通过减少颜色数量和关闭抖动来将文件大小减小到 38Kb,而不会降低质量:

convert +dither -colors 256 orig.png new.png

我的问题是:我可以在 matplotlib 中执行此操作吗?我已经搜索了文档,但找不到与设置保存时使用的颜色数量等有关的任何内容......

谢谢!

4

3 回答 3

9

这就是我通过 PIL(现在是 Pillow)运行 matplotlib 图像的方法

import cStringIO
import matplotlib.pyplot as plt
from PIL import Image

...

ram = cStringIO.StringIO()
plt.savefig(ram, format='png')
ram.seek(0)
im = Image.open(ram)
im2 = im.convert('RGB').convert('P', palette=Image.ADAPTIVE)
im2.save( filename , format='PNG')
于 2013-06-17T17:23:43.243 回答
2

您可以将 kwarg 传递dpi=给 savefig() ,这可能会帮助您减小文件大小(取决于您之后想要对图表执行的操作)。如果做不到这一点,我认为 Python Imaging Library ( http://www.pythonware.com/products/pil/ ) 几乎肯定会做你想做的事。

于 2012-05-28T12:46:47.953 回答
1

我不知道如何在 matplotlib 中执行此操作,但是一旦将文件写入磁盘,您始终可以使用PythonMagick执行此操作。

于 2012-05-28T12:45:28.080 回答