如何使用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个单位。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...