使用Python PIL库绘制直线不显示问题求助
解决PIL绘制对角线不显示的问题
问题原因
你的第二部分代码存在三个核心问题:
- 在
with语句块内对图片的修改仅停留在内存中,没有保存到test.png文件;im.save(sys.stdout, "PNG")只是将修改后的图片输出到标准输出,而非覆盖原文件。 - 最后通过
Image.open("test.png")打开的是未修改的原始文件,自然看不到绘制的对角线。 - 原图片是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
相关产品推荐
相关产品推荐

