2014-09-12 9 views
5

Używam matplotlib do generowania niektórych liczb za pośrednictwem savefig. Liczby te są czarno-białe i należy je zapisać w bardzo wysokiej rozdzielczości (1000 dpi) w formacie TIFF. Byłoby zatem korzystne, aby zapisać je ze zmniejszoną głębią bitową, aby zużywać mniej pamięci.Zmiana głębi bitowej liczb utworzonych za pomocą Matplotlib

W tym celu, moje pytanie: w jaki sposób określić głębokość bitową podczas zapisywania liczb za pomocą matplotlib?

Dzięki!

+0

Masz na myśli zapisanie do PNG? – mdurant

+0

Tak naprawdę zapisuję w formacie TIFF, chociaż jestem zainteresowany odpowiedziami dotyczącymi dowolnego formatu rastrowego, w tym PNG. – sircolinton

+0

Byłbym zaskoczony, gdyby program matplotlib obsługiwał taką opcję bezpośrednio, ale oczywiście zawsze można później konwertować obraz. Alternatywnie możesz użyć swojej ulubionej biblioteki obrazów Pythona, aby zapisać reprezentację obrazową tablicy numpy wygenerowaną z zawartości matplotlib. –

Odpowiedz

1

Do tej pory mam wrażenie, że matplotlib nie obsługuje opcji głębi bitowej. Jestem więc za pomocą ImageMagick do konwersji Posthoc obrazu:

convert -monochrome +dither A.tiff B.tiff

Kilka rzeczy będę wspomnieć w przypadku kogoś innego stara się zrobić podobnie:

Kiedy po raz pierwszy zmienił Głębia bitowa uruchamiając convert -monochrome A.tiff B.tiff , czcionki wyglądały na niedopuszczalnie brzydkie (nawet przy 1000 DPI!). Było tak z powodu wygładzania, które domyślnie wykonuje matplotlib. Nie mogłem znaleźć żadnej opcji, aby to wyłączyć, ale jego negatywne skutki (gdy próbkowanie z obniżeniem DPI) może być w dużej mierze obejść poprzez umożliwienie ditheringu. Dlatego też, nawet jeśli istnieje , jest opcja zmiany DPI obrazu wyjściowego w matplotlib, nie jest użyteczna, chyba że wykonuje dithering lub jeśli nie ma również opcji wyłączenia wygładzania.

Krótka odpowiedź, proponuję każdemu, kto znajduje się w podobnej sytuacji, co ja, aby wykonać ich konwersję monochromatyczną posthoc, tak jak to zrobiłem.

Powiązane problemy