使用教程

当前位置:首页>使用教程

怎么用 Excel 批量给图片加不同文字?含 Photoshop 数据组方法

时间:2026-08-11   访问量:1005

一张模板图,一份 Excel 名单,要生成几百张内容各不相同的图——电商主图、培训证书、工牌、商品标签、活动海报都是这类需求。这篇讲三种做法,包括 Photoshop 自带的数据驱动功能。

一、先分清你的需求是哪一层

"批量给图片加文字"其实是三种完全不同的活,用错方法会白折腾:

需求典型场景文字来源
每张图加一行字批量加水印、加编号、加署名一个 TXT,一行对一张图
每张图加一段话产品说明图、语录图、多行文案TXT,需要自动换行
每张图加多块字证书(姓名+课程+日期+编号)、电商主图(标题+卖点+价格)表格,每列一块内容

前两种相对简单。真正麻烦的是第三种——同一张图上,姓名要居中放大、日期要小字放右下、编号要靠左,每块文字的位置、字号、颜色、是否加底框全都不一样。这篇主要讲第三种。

二、方法一:Photoshop 变量数据组

很多人不知道 PS 自带这个功能,它本来就是为批量出图设计的。

操作步骤

  1. 做好模板——把姓名、日期、编号分别放在独立的文本图层上,图层命名清楚(比如 namedatecode
  2. 定义变量——菜单「图像 → 变量 → 定义」,在图层下拉里选中 name 图层,勾选「文本替换」,变量名填 name。其余图层同样处理
  3. 准备数据文件——存一个 UTF-8 编码的 CSV,第一行是变量名,要和上一步完全一致:
    name,date,code
    张三,2026-08-10,NO.001
    李四,2026-08-10,NO.002
  4. 导入数据——「图像 → 变量 → 数据组」,点「导入」选择 CSV,勾选「第一列用作数据组名称」
  5. 批量导出——「文件 → 导出 → 数据组作为文件」,选择输出目录和格式

PS 方案的坑

结论:PS 适合模板固定、数据量不大、文字长度可控的场景,比如统一格式的证书。

三、方法二:Python 脚本(免费)

用 Pillow 库读 CSV 批量绘制,灵活度最高:

import csv
from PIL import Image, ImageDraw, ImageFont

TEMPLATE = "template.png"
FONT_PATH = "C:/Windows/Fonts/msyh.ttc"

with open("data.csv", encoding="utf-8-sig") as f:
    for i, row in enumerate(csv.DictReader(f), 1):
        img = Image.open(TEMPLATE).convert("RGB")
        draw = ImageDraw.Draw(img)

        # 姓名:居中大字
        font_name = ImageFont.truetype(FONT_PATH, 72)
        w = draw.textlength(row["name"], font=font_name)
        draw.text(((img.width - w) / 2, 400), row["name"],
                  font=font_name, fill="#222222")

        # 日期:右下小字
        font_small = ImageFont.truetype(FONT_PATH, 28)
        draw.text((img.width - 300, img.height - 120), row["date"],
                  font=font_small, fill="#666666")

        # 编号:左下小字
        draw.text((120, img.height - 120), row["code"],
                  font=font_small, fill="#666666")

        img.save(f"out/{i:04d}_{row['name']}.png")
print("完成")

加上"文字太长自动缩小"

这是实际使用中最常遇到的问题,脚本里得自己实现:

def fit_font(draw, text, path, max_size, min_size, max_width):
    size = max_size
    while size > min_size:
        font = ImageFont.truetype(path, size)
        if draw.textlength(text, font=font) <= max_width:
            return font
        size -= 2
    return ImageFont.truetype(path, min_size)

脚本方案的真实成本

四、方法三:用工具处理

睿君图片批量加文字·多预设版就是按表格驱动这个思路做的:

  1. 准备表格(Excel 或 CSV)——第一列放图片文件名,其余每列放一种文本内容
  2. 给每一列绑定一个预设——字体、字号、颜色、描边、位置、对齐、背景框各自独立
  3. 预览确认后批量生成

每个预设可以单独设置的项:字体文件与字号、文字颜色与描边(颜色/宽度)、行间距、换行规则(按字数 / 按标点 / 两者叠加)、坐标与居中模式、背景框(颜色/透明度/内边距/圆角)、对齐方式,以及自动缩小字号(设一个最小字号下限,文字过长时自动收缩,不会顶出画面)。

预设能存成文件复用——这一批证书调好的参数,下一批直接调用。

如果你的需求没这么复杂,同系列还有两个更简单的:每张图加一段多行文案、需要标题正文两种样式的,用段落款;只是批量加一行水印文字的,用单行款就够,它支持图片和文字数量不等时循环复用。

五、三种方法怎么选

对比项PhotoshopPython 脚本专用工具
费用PS 订阅免费付费
门槛会 PS会写代码
多文字块各自样式做不到要自己写支持
文字过长自动缩小不支持要自己写支持
可视化定位
预设复用模板 PSD改代码预设文件
适合格式统一的证书会编程、需求特殊多字段批量出图

六、批量出图的几个实用建议

表格第一列一定放图片文件名。这样每行数据和底图明确对应,出错时好排查。文件名建议不含空格和特殊字符。

先拿 3 行数据试跑。特意挑最长的名字、最长的标题放进去试——排版问题基本都是被最长的那条撑出来的。

CSV 一律存 UTF-8。Excel 里要用「另存为 → CSV UTF-8(逗号分隔)」,用默认的 CSV 格式存中文十有八九乱码。

给长文字留退路。要么在表格里限制字数,要么用支持自动缩小字号的方案。指望"应该不会有那么长的",最后一定会有。

七、常见问题

Q:CSV 里的中文是乱码怎么办?
用「另存为 → CSV UTF-8」重存一次。程序读取时优先按 UTF-8-SIG 解码,能兼容 Excel 存的带 BOM 的文件。

Q:不同图片尺寸不一样,坐标怎么统一?
用相对定位或居中模式,别写死绝对坐标。有像素模式的方案会按图片短边比例自动缩放字号和坐标,一套参数适配多种尺寸。

Q:能不能一张图配多行数据,或者一行数据配多张图?
表格驱动的逻辑是一行数据对一张图。如果是"图片少、文字多"想循环复用,那是单行款的循环添加功能。

Q:文字要压在图片主体上,看不清怎么办?
加描边,或者启用半透明背景框(可调颜色、透明度、内边距、圆角)。背景框比描边更保险,尤其是背景复杂的实拍图。

Q:处理后图片质量下降?
注意输出格式和质量设置。JPG 建议质量 95 以上,或者直接输出 PNG。需要保留 EXIF、DPI、ICC 色彩配置的话,要选支持这些的方案。


相关阅读:几千个文件怎么平均分配到多个文件夹?

上一篇:几千个文件怎么平均分配到多个文件夹?

下一篇:没有了!

发表评论:

评论记录:

未查询到任何数据!

添加QQ

86998867
微信同号

添加QQ

微信扫一扫

微信联系
返回顶部