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

使用Python PIL库绘制直线不显示问题求助

解决PIL绘制对角线不显示的问题

问题原因

你的第二部分代码存在三个核心问题:

  1. 在with语句块内对图片的修改仅停留在内存中,没有保存到test.png文件;im.save(sys.stdout, "PNG")只是将修改后的图片输出到标准输出,而非覆盖原文件。
  2. 最后通过Image.open("test.png")打开的是未修改的原始文件,自然看不到绘制的对角线。
  3. 原图片是RGB模式,fill=128单值颜色可能会被解析异常,建议使用RGB三元组明确指定颜色。

修正后的代码

import sys
from PIL import Image, ImageDraw

with Image.open("test.png") as im:
    draw = ImageDraw.Draw(im)
    # 使用RGB三元组指定灰色,适配图片的RGB模式
    draw.line((0, 0) + im.size, fill=(128, 128, 128))
    draw.line((0, im.size[1], im.size[0], 0), fill=(128, 128, 128))
    
    # 将修改后的图片保存回原文件
    im.save("test.png")
    # 直接显示内存中已修改的图片
    im.show()

关键说明

  • 必须在with块内调用im.save("test.png"),确保内存中的修改被写入文件。
  • 直接在with块内调用im.show(),显示的是已修改的内存对象,无需重新读取文件。
  • RGB模式的图片使用三元组颜色值,避免单值颜色导致的显示异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:53:10