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

如何从数组抽取随机字符串传入PIL文本函数并同步用于元数据

实现代码

你只需要在遍历生成图片的阶段,取出all_images里提前存储的随机字符串替换文本占位符,同时将字符串写入图片的info元数据字段即可,原有的元数据文件写入逻辑无需修改:

import random
from PIL import Image, ImageDraw, ImageFont

# 你原有配置保持不变
soft_skill = [] # 你的100个字符串数组
TOTAL_IMAGES = 你要生成的图片总数
myFont = ImageFont.truetype("你的字体文件路径.ttf", 字号)
all_images = []

def create_new_image():
    new_image = {}
    new_image["soft_skill"] = random.choices(soft_skill)[0]
    
    if new_image in all_images:
        return create_new_image()
    else:
        return new_image

# 生成唯一属性组合逻辑不变
for i in range(TOTAL_IMAGES):
    new_trait_image = create_new_image()
    all_images.append(new_trait_image)

# 新增图片生成+写文字+存元数据逻辑
for index, image_trait in enumerate(all_images):
    # 初始化你的基础PNG图片,用现有底图就替换为Image.open("底图路径.png")
    img = Image.new("RGBA", (图片宽度, 图片高度), (背景色R, 背景色G, 背景色B, 背景透明度))
    draw = ImageDraw.Draw(img)
    # 取出当前抽中的字符串替换占位符
    selected_soft_skill = image_trait["soft_skill"]
    draw.text((88,912), selected_soft_skill, font=myFont, fill = (0,255,10))
    
    # 将字符串写入图片元数据,不覆盖原有元数据
    img.info["soft_skill"] = selected_soft_skill
    # 保存图片时传入pnginfo参数保留自定义元数据
    img.save(f"./输出目录/图片_{index}.png", pnginfo=img.info)

# 你原有写入元数据文件的逻辑直接复用all_images数组即可,无需修改

注意事项

  • 每次生成新图片时必须重新初始化img和ImageDraw实例,避免多张图的文字叠加到同一张画布上
  • PNG格式原生支持自定义元数据字段,保存时传入pnginfo=img.info参数即可永久保留写入的字符串信息
  • 原有生成元数据文件的逻辑不需要调整,all_images数组已经存储了所有随机抽取的字符串,直接遍历该数组写入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:02