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

循环仅导出单个字符图片问题求助:为何只保存Z而未保存A-Y?

问题原因分析

你猜的没错,确实是循环遍历了所有字符,但每次都覆盖了同一个文件,最终只留下最后一个字符Z的图片。

问题出在文件名的定义位置:

  • 你把filename = savepath+str(i)+'.png'放在了循环外面,这行代码只会执行一次,生成的文件名是固定的(如果循环前i的值刚好是Z,那文件名就是Z.png)。
  • 循环里每次生成不同字符的图片,但都用同一个文件名保存,后面的图片会直接覆盖前面的,所以最后只剩最后一次循环生成的Z的图片。
修复代码

把文件名的生成逻辑移到循环内部,让每次循环都对应一个唯一的文件名:

import string
from PIL import Image, ImageDraw, ImageFont

# 假设savepath和font已经提前定义好
characters = string.ascii_uppercase

for i in characters:
    # 把文件名生成移到循环内,每个字符对应一个唯一文件
    filename = savepath + str(i) + '.png'
    # Settings
    W, H = (100, 100)
    # Image
    image = Image.new("RGB", (W, H), "white")
    draw = ImageDraw.Draw(image)
    offset_w, offset_h = font.getoffset(i)
    w, h = draw.textsize(i, font=font)
    pos = ((W - w - offset_w)/2, (H - h - offset_h)/2)
    # Draw
    draw.text(pos, i, "green", font=font)
    # Save PNG File
    image.save(filename, "PNG", quality=95)

这样每次循环都会生成对应字符的文件名(A.png、B.png...Z.png),就不会出现覆盖的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:20:44