Python`aggdraw`模块错误(?):可见alpha通道

Python`aggdraw`模块错误(?):可见alpha通道,python,python-imaging-library,alpha-transparency,aggdraw,Python,Python Imaging Library,Alpha Transparency,Aggdraw,想象一下简单的脚本: from PIL import Image from aggdraw import Draw, Brush im = Image.new("RGBA", (600, 600), (0, 0, 0, 0)) draw = Draw(im) brush = Brush("yellow") draw.polygon( ( 50, 50, 550, 60, 550,

想象一下简单的脚本:

from PIL import Image
from aggdraw import Draw, Brush

im = Image.new("RGBA", (600, 600), (0, 0, 0, 0))
draw = Draw(im)

brush = Brush("yellow")

draw.polygon(
             (
              50, 50,
              550, 60,
              550, 550,
              60, 550,
             ),
             None, brush
            )

draw.flush()
im.save("2.png")
结果是:

(对不起,尺寸太大了,但这更清楚)

问题是: 你能看到非黄色和非白色的边缘吗?这是阿尔法通道什么的

当我尝试仅使用
PIL
Draw
对象执行此操作时,它看起来清晰、良好,但没有抗锯齿

但是使用
aggdraw
Draw
对象,它看起来是抗锯齿的,但是有着难看的脏边

我需要有非标准边角的多边形。简单的盒子不是我想要的


请帮我找到一些好的乐观的答案来解决这个问题。

这是因为你的背景是黑色的,但是是透明的。如果将图像背景设置为白色,则不会获得可见边。在我的简单测试中,无论是透明还是纯白都能起作用

尝试以下值:

transBlack = (0, 0, 0, 0)         # shows your example with visible edges
solidBlack = (0, 0, 0, 255)       # shows shape on a black background
transWhite = (255, 255, 255, 0)
solidWhite = (255, 255, 255, 255)

im = Image.new("RGBA", (600, 600), solidWhite)

这是因为你的背景是黑色的,但是是透明的。如果将图像背景设置为白色,则不会获得可见边。在我的简单测试中,无论是透明还是纯白都能起作用

尝试以下值:

transBlack = (0, 0, 0, 0)         # shows your example with visible edges
solidBlack = (0, 0, 0, 255)       # shows shape on a black background
transWhite = (255, 255, 255, 0)
solidWhite = (255, 255, 255, 255)

im = Image.new("RGBA", (600, 600), solidWhite)

当然,solid bg可以处理这个问题。实际上,对于多边形的所有颜色,我只需要透明的白色?还是要特别的颜色?改用pycairo。我不理解你进一步的问题。除非你能给我举个失败的例子,否则透明的白色应该可以。你要求我给出“乐观的回答”和建议,但显然你有更多的要求,你没有提到。当然,solid bg可以解决这个问题。实际上,对于多边形的所有颜色,我只需要透明的白色?还是要特别的颜色?改用pycairo。我不理解你进一步的问题。除非你能给我举个失败的例子,否则透明的白色应该可以。你要求我给出“乐观的回答”和建议,但显然你有更多的要求,你没有提到。