使用PIL的Imagedraw创建具有给定厚度的圆弧

Ell*_*iot 7 python drawing image python-imaging-library

我正在尝试使用PIL和Imagedraw创建分段弧.弧功能允许我轻松绘制弧线,但它只是一条线.我需要能够放置一个给定半径和厚度的弧(ID到OD),但AI找不到任何类型的厚度或宽度设置.有没有办法做到这一点?如果没有,是否有其他方法使用PIL执行此操作?

片段:

import Image
import ImageDraw

conv = 0.1
ID = 15
OD = 20
image = Image.new('1',(int(ceil(OD/conv))+2,int(ceil(OD/conv))+1), 1)
draw = ImageDraw.Draw(image)
diam = OD-ID
box=(1, 1, int(ceil(diam/conv)), int(ceil(diam/conv))) #create bounding box
draw.arc(box, 0, 90, 0) #draw circle in black
Run Code Online (Sandbox Code Playgroud)

Ell*_*iot 0

我发现可以使用的一个技巧是在黑色圆圈内制作一个白色圆圈。您可以根据需要使用 pieslice 方法将其分解。渲染是连续的,因此您只需确保顺序正确即可。困难的部分是正确定位,因为 Imagedraw 使用边界框而不是中心和半径坐标。你必须确保所有东西的中心最终都完全重合。

该解决方案仅在有限的情况下有效,请参阅评论。