2013-01-16 14 views
9

Dla linii i elips w pliku PIL obrazy są przybliżone.Czy istnieje metoda antyaliasingu dla Pythona PIL?

Zauważyłem, że wygładzanie występuje tylko w rozmiarze i miniaturze.

Czy istnieje sposób na wygładzanie krawędzi podczas rysowania linii lub elipsy?

+1

Możesz zrobić filtrowanie dolnoprzepustowe :) Prawdopodobnie będziesz chciał przejść do 'aggdraw' (lub' cairo' lub ...) dla "bardziej wyszukanego" rysunku. – mmgp

Odpowiedz

14

Jedynym sposobem, aby to zrobić natywnie, jest supersampling. Renderuj obraz w wielu wymaganym rozmiarze, a następnie resize go z filter=Image.ANTIALIAS.

+3

tak, używam * 2, a następnie zmień rozmiar na/2. to działa. – whi

+0

Działa dobrze, mimo że w najnowszej wersji programu Pillow podano: 'TypeError: resize() otrzymało nieoczekiwany argument słowa kluczowego 'filter', więc użył wbudowanego' im.thumbnail ((original_width, original_height)) ', który również domyślnie przyjmuje' resample = ANTIALIAS' dla najlepszej jakości. – Hugo

2

aggdraw (http://effbot.org/zone/aggdraw-index.htm) może być coś jesteś zainteresowany.

Moduł aggdraw realizuje podstawowe WCK 2D interfejsu rysunek na górze biblioteki AGG. Ta biblioteka zapewnia wysokiej jakości rysowanie, z wygładzaniem i kompozycją alfa, będąc w pełni kompatybilną z rendererem WCK.

Moduł aggdraw może być używany z biblioteką PIL lub WCK (w systemie Tkinter lub rodzimym systemie Windows). Może być również używany jako samodzielna biblioteka.

+0

Czy jest port dla OS X? – DrMickeyLauer