使用Matplotlib生成的图像如何更改位深度

6
我正在使用matplotlib通过 savefig生成一些图像。 这些图像是黑白的,并且需要以非常高的分辨率(1000 dpi)保存为TIFF格式。 因此,最好以降低位深度的方式保存它们,以便使用更少的内存。
因此,我的问题是:如何在保存matplotlib图时指定位深度?
谢谢!

你的意思是保存为PNG格式吗? - mdurant
我实际上是以TIFF格式保存的,尽管我对与任何光栅格式相关的答案都很感兴趣,包括PNG。 - sircolinton
如果matplotlib直接支持这样的选项,我会感到惊讶,但是您当然可以在之后转换图像。或者,您可以使用您喜欢的Python图像库来保存从matplotlib内容生成的numpy数组图像表示。 - David Zwicker
谢谢David!我按照你的建议去做了。我放弃了在matplotlib中尝试它的原因已经在我的答案中给出。干杯! - sircolinton
1个回答

1
到目前为止,我得出的印象是matplotlib不支持比特深度选项。因此,我使用imagemagick将图像后期转换:
convert -monochrome +dither A.tiff B.tiff
如果有人试图做类似的事情,我会提到几件事情:
当我第一次通过运行convert -monochrome A.tiff B.tiff来更改比特深度时,字体看起来非常丑陋(即使在1000 DPI下!)。这是由于matplotlib默认执行的抗锯齿。我找不到任何关闭此功能的选项,但可以通过启用抖动来大部分规避其负面影响(当降低DPI时)。因此,即使有一个在matplotlib中更改输出图像DPI的选项,它也没有用,除非它执行抖动或者除非还有一个禁用反锯齿的选项。
简而言之,我建议和我处境相似的人在后期进行单色转换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接