我使用matplotlib生成一个绘图,然后使用matplotlib.pyplot.savefig保存到PNG文件。
一切正常,但文件大小非常大(约120Kb)。
之后我可以使用ImageMagik(通过shell)通过减少颜色数量和关闭抖动来将文件大小减少到38Kb而不会降低质量:
convert +dither -colors 256 orig.png new.png
我的问题是:我可以在matplotlib中执行此操作吗?我搜索了文档,找不到任何与设置保存时使用的颜色数等有关的事情....
谢谢!
答案 0 :(得分:6)
这是我通过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')
答案 1 :(得分:2)
您可以将dpi=
kwarg传递给savefig(),这可能会帮助您减少文件大小(取决于您之后要对图表执行的操作)。如果做不到这一点,我认为Python Imaging Library(http://www.pythonware.com/products/pil/)几乎肯定会做你想要的。
答案 2 :(得分:1)
我不知道在matplotlib中执行此操作,但是一旦将文件写入磁盘,就可以使用PythonMagick来完成此操作。