2014-09-12 34 views
5

kullanılarak üretilen değerlerin bit derinliğinin değiştirilmesi savefig aracılığıyla bazı şekiller oluşturmak için matplotlib kullanıyorum. Bu rakamlar siyah beyazdır ve TIFF formatında çok yüksek çözünürlükte (1000 dpi) kaydedilmesi gerekir. Bu nedenle, daha az bellek kullanmak için azaltılmış bir bit derinliği ile onları kaydetmek için yararlı olacaktır.Matplotlib

Bu amaçla, sorum: matplotlib ile şekilleri kaydederken bit derinliği nasıl belirlenir?

Teşekkürler!

+0

PNG'ye kaydetmek mi istiyorsunuz? – mdurant

+0

Aslında TIFF formatında kaydediyorum, ancak PNG de dahil olmak üzere herhangi bir raster formatıyla ilgili cevaplarla ilgileniyorum. – sircolinton

+0

Matplotlib, böyle bir seçeneği doğrudan destekliyorsa şaşırırdım, ancak tabiki görüntüyü sonradan dönüştürebilirsiniz. Alternatif olarak, matplotlib içeriğinden oluşturulan bir numpy dizi görüntü temsili kaydetmek için favori python görüntü kitaplığınızı kullanabilirsiniz. –

cevap

1

Şimdiye kadar, matplotlib'in bit derinliği seçeneğini desteklemediği izlenimini ediniyorum. Başka durumda birisi söz edeceğiz

convert -monochrome +dither A.tiff B.tiff

Çeşitli şeyler Benzer yapmaya çalışıyor: Ben bu şekilde görüntü posthoc dönüştürmek için imagemagick kullanıyorum ben ilk convert -monochrome A.tiff B.tiff çalıştırarak bitdepth değişti

fontlar kabul edilemez derecede çirkin görünüyordu (1000 DPI'da bile!). Bu, matslotlib'in varsayılan olarak gerçekleştirdiği antialiasing yüzünden oldu. Bunu kapatmak için herhangi bir seçenek bulamadım, ancak olumsuz etkilerini (DPI'yı küçültme yaparken) büyük ölçüde dithering'i etkinleştirerek engellenebilir. Bu nedenle,, matplotlib'deki çıktı görüntüsünün DPI'sini değiştirmek için bir seçenek olsa bile, dithering yapmadıkça veya antialiasing'i devre dışı bırakma seçeneği olmadıkça, yararlı olmaz.

Kısa yanıt, yaptığım gibi tek renkli dönüştürme posthoc'unu yapmak için benzer bir durumda bulunan herkese öneririm.