首页 > 解决方案 > 使用 ImageDraw 不会在图像上绘制线条

问题描述

我正在尝试使用 PIL 打开图像,然后在其上画一条线,但它不起作用。我正在尝试进行调平显示,线条是用户升级的程度。

我已经尝试使用创建一个新图像Image.new,并且已经有一个可用的基础并使用它打开它Image.open,我还尝试将坐标直接放入函数中,并将两个元组作为变量并将这些变量调用到功能(如下所示)。基础图像是透明图像。

    length = 300 # Used as a placeholder integer, as this would change depending on user's level
    base = Image.open('./level_up/base.png')
    draw = ImageDraw.Draw(base)
    pos1 = (280, 324)
    pos2 = (280, length + 324)
    draw.line((pos1, pos2), fill=(255, 102, 168), width=20)
    base.save('./level_up/base2.png')

我打开图像,这是一个空白、透明的图像,它是1500 x 296,什么都没有。没有线什么的。

标签: pythonpython-3.ximagepython-imaging-librarydraw

解决方案


当您使用包含透明度的图像(PIL 中的“RGBA”模式)时,您必须明确传递不透明度作为颜色的第四个分量。只需在调用行中添加“255”,即填充颜色为 100% 不透明度,它应该可以工作:

draw.line((pos1, pos2), fill=(255, 102, 168, 255), width=20)

推荐阅读