python - 如何使用PIL填充圆的一部​​分?

标签 python image python-imaging-library charts

我正在尝试使用 PIL 来完成任务,但结果非常dirty .

我正在做的是尝试填充圆的一部​​分,正如您在 image 上看到的那样.

这是我的代码:

def gen_image(values):

    side = 568
    margin = 47
    image = Image.open(settings.MEDIA_ROOT + "/i/promo_circle.jpg")

    draw = ImageDraw.Draw(image)
    draw.ellipse((margin, margin, side-margin, side-margin), outline="white")

    center = side/2
    r = side/2 - margin

    cnt = len(values)

    for n in xrange(cnt):
        angle = n*(360.0/cnt) - 90
        next_angle = (n+1)*(360.0/cnt) - 90
        nr = (r * values[n] / 5)

        max_r = r
        min_r = nr

        for cr in xrange(min_r*10, max_r*10):
            cr = cr/10.0
            draw.arc((side/2-cr, side/2-cr, side/2+cr, side/2+cr), angle, next_angle, fill="white")

    return image

最佳答案

已经有一段时间没有使用PIL了,但是在其他各种图形库中,绘制圆弧时经常会出现锯齿问题。

您是否尝试过启用抗锯齿功能或使用较粗的线条进行绘制?

[编辑]快速浏览一下 PIL 库,我认为您对线宽等的看法是正确的。

听起来这里最简单的事情就是建立一个覆盖每个区域的多边形。因此,每一端都有一对点,然后在中间施加一个负载,以防止边缘看起来呈锯齿状。这有道理吗?

关于python - 如何使用PIL填充圆的一部​​分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2962097/

相关文章:

python - 如何使用 Python 从 MongoDB 的 GridFS 检索/读取图像?

python - 如何从包含重复项的 id 列表中生成唯一 id

python - 如何使用 python 和 ssh 遍历交换机的所有端口并一一禁用它们?

python - 我怎样才能使用 pytest 选项作为固定装置而不是重复自己?

java - 在 Java 中绘制带轮廓的字符串有什么更好的方法吗?

ios - iOS 11 UIBarButtonItem ImageView大小错误

python - 如何使用python调整图像大小但保留像素值

python - 使用 (py)OpenGL 处理纹理和图像

python - Django:关闭 http 响应消息的控制台输出

image - 如何在python flask服务器中保存base64图像