如何使用PIL画圆?

问题描述

正如标题所述,我想在PIL中画一个圆,但输出不是一个

输出https://i.stack.imgur.com/qlYmD.png

代码

  mask_im = Image.new("RGB",im2.size,(53,108,181))
  draw = ImageDraw.Draw(mask_im)

  x,y = mask_im.size
  eX,eY = 517,191

  bBox = (x/2 - eX/2,y/2 - eY/2,x/2 + eX/2,y/2 + eY/2)
  draw.ellipse(bBox,fill = 'black',outline ='black')
  mask_im.save('circle.png')

我想知道如何解决此问题。

解决方法

50为中心绘制半径为(150,150)的圆:

  mask_im = Image.new("RGB",(300,300),(53,108,181))
  draw = ImageDraw.Draw(mask_im)

  X,Y = 150,150
  r = 50
  
  draw.ellipse([(X-r,Y-r),(X+r,Y+r)],fill = 'black',outline ='black')

您必须向ellipse提供

两点定义边界框。 [[x0,y0),(x1, y1)]或[x0,y0,x1,y1],其中x1> = x0且y1> = y0

因此,对于边界框的左下角,我们必须将r单位从X轴中心向后移,并将r单位从y轴中心向后移。同样,对于边界框的右上角,我们必须从X轴中心向前移动r个单位,从y轴中心向上方移动r个单位。