2014-09-12 29 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,因爲我已經做了。