2014-09-12 103 views
5

我正在使用matplotlib通过savefig生成一些数字。这些数字是黑白的,需要以TIFF格式以非常高的分辨率(1000 dpi)保存。因此,将它们的位深度减小以便使用较少的内存将是有益的。更改使用Matplotlib生成的数字的位深度

为此,我的问题是:如何在使用matplotlib保存图形时指定位深度?

谢谢!

+0

你的意思是保存为PNG? – mdurant 2014-09-12 14:22:25

+0

我实际上是以TIFF格式保存的,尽管我对有关任何光栅格式(包括PNG)的答案感兴趣。 – sircolinton 2014-09-12 14:27:04

+0

我会很惊讶,如果matplotlib直接支持这样的选项,但你当然可以随后转换图像。或者,您可以使用您最喜欢的python图像库来保存从matplotlib内容生成的numpy数组图像表示。 – 2014-09-13 19:12:54

回答

1

到目前为止,我得到的印象是matplotlib不支持位深度选项。因此我使用ImageMagick的图像转换事后:

convert -monochrome +dither A.tiff B.tiff

几件事情,我会的情况下,别人提的是试图做类似:

当我第一次运行convert -monochrome A.tiff B.tiff变位深,字体看起来难以接受(甚至在1000 DPI!)。这是因为matplotlib默认执行的抗锯齿。我找不到任何方法来解决这个问题,但是它的负面影响(对DPI进行下采样时)可以通过启用抖动在很大程度上避开。因此,即使是一个用于更改matplotlib中输出图像的DPI的选项,除非执行抖动或除非还有禁用抗锯齿的选项,否则它是无用的。

简短的回答,我会建议任何人在类似的情况下,我做他们的单色转换posthoc,因为我已经做了。