You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么使用aggdraw绘制图像时得到的是空白画布?

问题解决方法

你遇到的问题是aggdraw的运行机制和PIL原生ImageDraw不同导致的,aggdraw的所有绘制操作都先在自身的离屏缓冲区执行,并不会自动同步到关联的PIL Image对象,必须主动调用同步方法才能把绘制结果写到图片里。

具体修复步骤

  • 所有绘制操作完成后、调用image.show()之前,添加draw.flush()代码,将aggdraw缓冲区的内容写入PIL图像,这个是aggdraw的强制要求步骤,PIL自带的ImageDraw无该要求所以你之前的原生Pillow代码可以正常运行。
  • 额外可检查项:确认ROW_SIZE、COL_SIZE两个常量已提前定义,且segments中存储的线段坐标全部在你定义的图像尺寸范围内,避免线段绘制到画布外不可见。

修正后的完整代码

import aggdraw
from PIL import Image

# 提前定义图像尺寸常量,可根据需求调整数值
ROW_SIZE = 800
COL_SIZE = 600
# 此处替换为你自己的segments数据
segments = []

image = Image.new("RGB", (ROW_SIZE, COL_SIZE), (255,255,255))
draw = aggdraw.Draw(image)
pen = aggdraw.Pen("black", 2)

# 线段绘制逻辑
for segment in segments:
   draw.line((segment.point1.x, segment.point1.y, segment.point2.x, segment.point2.y), pen)

# 新增:同步绘制结果到PIL图像
draw.flush()
image.show()

内容的提问来源于stack exchange,提问作者Tristan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:00:02