2013-01-16 9 views
9

Für Linien und Ellipsen in PIL sind die Bilder grob.Gibt es eine Antialiasing-Methode für Python PIL?

Ich fand Antialiasing nur in Größe und Miniaturansicht.

Gibt es eine Möglichkeit zum Antialiasing beim Zeichnen einer Linie oder Ellipse?

+1

Sie könnten eine Tiefpassfilterung machen :) Sie werden wahrscheinlich zu "aggdraw" (oder 'cairo', oder ...) für" schickere "Zeichnung wechseln wollen. – mmgp

Antwort

14

Die einzige Möglichkeit, dies nativ zu tun, ist Supersampling. Rendern Sie Ihr Bild mit einem Vielfachen der von Ihnen benötigten Größe, dann resize mit filter=Image.ANTIALIAS.

+3

Ja, ich benutze * 2 und ändere die Größe auf/2. Es klappt. – whi

+0

Funktioniert gut, obwohl mit neustem Pillow 'TypeError: resize() ein unerwartetes Schlüsselwortargument 'filter' erhalten hat, also das In-place' im.thumbnail ((original_width, original_height)) 'verwendet, das standardmäßig auch resample = ANTIALIAS' für beste Qualität. – Hugo

2

aggdraw (http://effbot.org/zone/aggdraw-index.htm) kann etwas, das Sie interessiert sind, sein.

Das aggdraw Modul implementiert den Grund WCK 2D-Zeichnung Schnittstelle auf der Oberseite der Bibliothek AGG. Diese Bibliothek bietet hochqualitatives Zeichnen mit Anti-Aliasing und Alpha-Compositing, während sie vollständig mit dem WCK-Renderer kompatibel ist.

Das Aggregationsmodul kann mit PIL oder der WCK-Bibliothek (unter Tkinter oder nativem Windows) verwendet werden. Es kann auch als eigenständige Bibliothek verwendet werden.

+0

Gibt es einen Port für OS X? – DrMickeyLauer

Verwandte Themen