2016-05-16 3 views
0

Ich habe ein Problem beim Zeichnen symmetrischer Kreise mit der Python Imaging Library. Der folgende Code sollte einen Kreis mit einem Durchmesser von 6 px erstellen. Was es zeichnet, ist ein unsymmetrischer "Kreis", der im Würfelbild gezeigt wird. Hat jemand eine Lösung? Dieses Problem tritt bei allen evan-Durchmessern auf. enter image description hereKleiner Kreis (6x6px) wird asymmetrisch gerendert

from PIL import Image, ImageDraw 

img = Image.new('1', (8, 8), "white") 
draw = ImageDraw.Draw(img) 

draw.ellipse((1, 1, 6, 6), fill = 'black', outline ='black') 

img.show() 
+0

Vielleicht sollten Sie einen Fehler auf PIL einreichen? Was Sie bemerken werden ist, dass alle geraden Durchmesser dieses Artefakt erzeugen, ungerade Durchmesser scheinen dieses Artefakt nicht zu haben. Versuchen Sie zum Beispiel: 'draw.ellipse ((1, 1, 400, 400), fill = 'schwarz', outline = 'schwarz ') 'vs.' draw.ellipse ((1, 1, 401, 401), fill =' schwarz ', outline =' schwarz ') ' –

Antwort

0

Der Code ist richtig. Das ist ein Bug im Kissen-Paket. Es sollte mit dem nächsten Update (3.3.0) am 1. Juli behoben werden.

3

Ich denke, das ist, weil drawing circles is hard und Ihr Ergebnis ist das, was der Algorithmus von PIL verwendet wird, erzeugt für solche kleinen Kreise. Sie könnten Ihren eigenen "Kreis" mit einem Polygon zeichnen.

Man könnte jedoch argumentieren, dass Ellipsen mit gleichen Radien mindestens symmetrisch sein sollten ...