2013-12-23 2 views
11

Я пытаюсь сделать простой круг и сохранить это в файл с помощью Python Imaging Library:Python PIL - Draw Circle

import Image, ImageDraw 

image = Image.new('RGBA', (200, 200)) 
draw = ImageDraw.Draw(image) 
draw.ellipse((20, 180, 180, 20), fill = 'blue', outline ='blue') 
draw.point((100, 100), 'red') 
image.save('test.png') 

Точка draw.point появляется на изображении, но сам эллипс не делает. Я попытался изменить режим на RGB (я думал, что режим может повлиять на отображаемый), но это не решило его.

Как это исправить? Благодаря!

ответ

11

Вместо указания верхний правый и нижний левый координаты, поменять их местами, чтобы получить верхний левый и нижний правый.

draw.ellipse((20, 20, 180, 180), fill = 'blue', outline ='blue') 
+0

Ах, я не думал, что будет разница. Благодаря! –

+0

@ F3AR3DLEGEND, документация довольно тихая по теме, не так ли? Все, что он упоминает, представляет собой ограничивающий прямоугольник, и вы думаете, что любые углы коробки будут делать. –

+0

Yup. Я думал, что любая пара противоположных углов будет работать, но, видимо, нет. –

4

Ваши координаты многоточие неверны, которые должны быть (x1, y1, x2, y2), где x1 <= x2 и y1 <= y2, как те пары, (x1, y1) и (x2, y2), представляет собой, соответственно, верхний левый и нижний правый углы ограждающих прямоугольника.

Попробуйте изменить к

draw.ellipse((20, 20, 180, 180), fill = 'blue', outline ='blue') 

enter image description here