如何在Python中绘制无轮廓的透明椭圆

如何在Python中绘制无轮廓的透明椭圆,python,drawing,python-imaging-library,transparency,Python,Drawing,Python Imaging Library,Transparency,我试图用枕头画多个透明椭圆,我想画没有轮廓的椭圆。没有大纲,我似乎无法使它工作 下面是一些测试代码: from PIL import Image, ImageDraw w,h = 100,100 img = Image.new('RGB', (w,h),(255,255,255)) drw = ImageDraw.Draw(img,"RGBA") drw.polygon([(50, 0), (100, 100), (0, 100)], (255, 0, 0, 125)) drw.polygon(

我试图用枕头画多个透明椭圆,我想画没有轮廓的椭圆。没有大纲,我似乎无法使它工作

下面是一些测试代码:

from PIL import Image, ImageDraw
w,h = 100,100
img = Image.new('RGB', (w,h),(255,255,255))
drw = ImageDraw.Draw(img,"RGBA")
drw.polygon([(50, 0), (100, 100), (0, 100)], (255, 0, 0, 125))
drw.polygon([(50,100), (100, 0), (0, 0)], (0, 255, 0, 125))
drw.ellipse([(40, 40), (w - 10, h - 10)], fill=(0,0,255,125), outline=None)
img.save('out.png', 'PNG')
(来自,有一些修改)


只有椭圆才有轮廓。为什么?如何避免这种情况?

在使用了一些代码、查看了文档和一些源代码之后,我很确定,像、、这样的函数很可能存在一些问题,它们在后台共享相同的代码

我创建了以下示例:

从matplotlib导入pyplot作为plt
从PIL导入图像,ImageDraw
def示例(轮廓α=无,宽度=无):
如果outline_alpha为无:
轮廓=无
其他:
大纲=(255,255,0,大纲字母)
如果宽度为“无”:
宽度=0
img=Image.new('RGB',(100100),(255255255))
drw=ImageDraw.Draw(img'RGBA')
drw.行([(0,40),(100,40)],(0,0,0,255))
drw.行([(50100),(100,0)],(0,0,0255))
drw.多边形([(50,100),(100,0),(0,0)],(0,255,0,128),轮廓)
drw.椭圆([(40,40),(90,90)],(0,0,255,128),轮廓,宽度)
返回img
plt.图(1,figsize=(15,10))
plt.subplot(2,3,1),plt.imshow(example()),plt.title('未指定轮廓,宽度=0')
plt.subplot(2,3,2),plt.imshow(示例(255)),plt.title('指定不透明轮廓,宽度=0')
plt.subplot(2,3,3),plt.imshow(示例(128)),plt.title('指定半透明轮廓,宽度=0')
plt.subplot(2,3,4),plt.imshow(示例(无,5)),plt.title('未指定轮廓,宽度=5')
plt.subplot(2,3,5),plt.imshow(示例(255,5)),plt.title('指定了不透明轮廓,宽度=5')
plt.subplot(2,3,6),plt.imshow(示例(20,5)),plt.title('指定的半透明轮廓,宽度=5')
plt.紧_布局()
plt.show()
输出如下:

查看多边形,如果没有指定轮廓(左上图),我们会看到黑线可见,这是多边形的边界之一。指定不透明轮廓(上中心图像),黑线将不再可见。设置半透明轮廓(右上角图像)会显示轮廓与多边形的边界相同

现在,椭圆也是如此:如果没有设置轮廓(左上),则显示轮廓,很可能与
fill
参数使用的颜色相同,但不包含alpha值。设置不透明轮廓(上中)“覆盖”意外的现有轮廓,但在设置半透明轮廓时,我们看到意外的轮廓仍然存在

当在
椭圆
中设置
宽度>1
时,此效果变得更加明显,请参见底部一行。意外的轮廓似乎仍然具有
width=1
,而显式设置的轮廓具有
width=5

再一次,我很确定,这种行为不是故意的——我将在他们的GitHub问题跟踪器中打开一个问题编辑:我刚打开另一次编辑:已修复


希望这能有所帮助–不知何故…

非常感谢您对此进行进一步调查,提供了全面的答案,并将问题发布在Github上!这让我发疯。我想可能有个bug,但我觉得更可能是我误解了什么。这不能解决我的问题,但这是我能要求的最好的了。