Power+ 1.0 中曾介绍过《用 Photoshop 制作 GIF 动画》和《Photoshop 的自动化图片处理》的方法。提到了使用频率不高,但需要时颇为实用的两项功能:动图制作、自动化处理。分别为我们解答了 GIF 编辑、批量处理图片的操作都是如何实现的。
在我们实际生活中,还有一项极其耗费时间的重复机械操作:批量文字替换。例如制作邀请函,客人们的名字肯定是不同的,一项一项修改恐怕要改到天昏地暗;又比如制作带编号的名片、证书、工牌等,一个名字对应一个编号,稍有差池就会让它们对不上号,引起不必要的麻烦。
其实这项操作在 Photoshop 中早就有了解决方案,今天就来讲讲 Photoshop 中的「变量」「数据组」功能,批量完成单项、多项数据的自动替换。
制作邀请函:单项数据
以制作邀请函为例,我们需要先制作好一份邀请函的 PSD 源文件,需要做到只差最后一步导出的程度。
其中的姓名部分先随意输入一个名称,就像下图一样——
除了图片源文件,还需要准备一份 TXT 文档,如果你是手动输入的,那么不太容易出错,需要遵循以下格式——[rihide]——
- 第一行是名称,比如「客人姓名」「手机号」「编号」这类简单明了的名字。
- 第二行之后输入具体的数据信息,比如所有客人的「姓名」,按照「每行一个名字」的格式。
- 不需要空行、最后加空格。
客人姓名
文刀漢三
沨沄极客
Hum
Minja
Fairyex
……
有了这样一份源文件和清单,就可以开始操作了。如果手头一时没有这些内容,我提供了一份示例文档,你可以根据下面这份清单、邀请函模板进行制作。
? 下载 姓名清单 TXT 文件 (访问密码:PowerPlus)
? 下载 邀请函模板 PSD 源文件 (访问密码:PowerPlus)
修改字体样式
在批量替换文字之前,还是建议先把文字的样式设置好,为了防止二字、三字、四字的名称效果不同,建议将文字设置为左对齐。如果居中文字,更长的文字将其替换后就会和前文重叠,影响美观。
如果是「填空」的形式,则在两边稍稍空开一些距离,防止文字重叠。或将示例文字改为最长的名字,防止出现问题。
既然是 Photoshop 自带的功能,文字的字体、样式、字号、阴影等设置在替换之后都会被保留,需要提前设置好样式。
设置图层为变量
准备完毕之后,首先要把图层设置为变量,将其作为被替换的内容。我们先讲讲单一变量如何设置,稍后再看多个变量的设置方法。
- 修改图层名称。比如把图层名称修改为更容易理解的「客人姓名」。如果图层较多,或者存在同名图层,最好加一些特殊的字符,来确保选中了正确的图层。
- 选中这一图层,打开菜单栏的「图像 – 变量 – 定义」,在变量中,为这一图层勾选「文本替换」。
- 在文本替换下方「名称」不是随便填的,这里需要和 TXT 中的第一行对应。
导入数据组
设置完变量之后,就可以导入数据组了。数据组指的就是整个姓名清单,Photoshop 只能够读取 TXT、CSV 这两种格式的数据组。
- 打开菜单栏的「图像 – 变量 – 数据组」。
- 选择「导入 – 选择文件」来添加制作好的 TXT 文件。
- 勾选「将第一列用作数据组名称」和「替换现有的数据组」,然后确定即可。
在导入这一步非常容易出现各种错误。可能出现的一个问题是「无法将文件内容作为数据组解析」,通常是因为编码问题。
比如这一条错误提示,由于没有选择正确的编码,文件中的第一行变成了乱码。Photoshop 中最好根据文件选择「自动」或「UTF-8」。「自动」这一项能够识别 ANSI 编码,macOS 用户可以在 Photoshop 中导入 UTF-8 文件,也可以用 VSCode 等编辑器将其转换为 ANSI 编码。
如果遇到这个错误,说明你在末尾增加了一行空行,Photoshop 认为这也是一行数据,因此会出现「数据组不完整」的提示。解决方法也很简单,删去这些空行,重新尝试导入就能正确识别。
还有一些可能出现的错误,在下面导入多项数据时再详细讲解 CSV 格式的导入。
导出为 PSD
此时 Photoshop 已经可以理解你想将「某个变量」替换成「某些数据」了。但并不会直接显示出来,你所看到的依然是单个文件。
这时只需要将数据组作为多个文件导出,Photoshop 就会将你需要修改的部分自动修改为清单中的文字。导出的具体方法如下——
- 打开「文件 – 导出 – 数据组作为文件」。
- 选择文件导出的位置。
- 对文件进行命名,最多可以用 6 个字段对文件名进行自定义。通常是用序号标记。
- 扩展名只能选择
*.PSD
格式(可换小写),所以保存即可。
鉴于只能保存 PSD 格式,在保存完成后就会消耗「PSD 源文件 × N」的存储空间。导出的时间视 PSD 文件大小,如果文件本身巨大,字体样式繁复,可能会非常慢;如果源文件动辄上百 MB,只差最后一步了,建议先导出一份较小的 JPG、PNG 图片,再回到 Photoshop 中对这些没有图层信息的图片文件进行操作,从而降低保存时间和文件大小。
PSD 批量转为 JPG
获得与清单名称对应的 PSD 文件后,还需要一个步骤,就是将这些源文件批量转换为图片格式。这里要用到的是「文件 – 脚本 – 图像处理器」。
- 打开「文件 – 脚本 – 图像处理器」。
- 选择上一步导出 PSD 的文件夹。
- 选择批量保存为 JPG 格式,根据需要调整品质,点击运行就能导出文件。
这里如果勾选「运行动作」,就可以对图片文件执行批量操作,比如设置一个动作为「保存为 PNG」,就可以将所有文件以 PNG 的格式保存。不过也有一些限制,比如执行「加阴影」并勾选「存储为 JPEG」则会报错,因为 JPG 格式不支持透明图层。这些动作能否执行成功,都要看 Photoshop 和图片格式方面是否有限制。
制作名片:多项数据
很多教程止步于此,但实际上还有一些情况是需要多对数据组合而成的。
可能有人会说导入两次或者再复制一列进去不就行了吗?可是 Photoshop 对文档的格式有着极为苛刻的要求,就连多一行空格、错填一列名字、文本编码错误,都会出现问题而被无情拒绝。因此多项数据的处理其实会面临更多困难,需要特别注意导入文件的制作,也就是记录数据组信息的 TXT、CSV 文件。
那么如何利用上面的方法来实现多项数据的导入呢?最典型的例子就是名片,一张名片上会用到姓名、手机、邮箱等信息,这些数据必须一一对应,而且需要一次性完成。
你可以根据下面这份数据表格、名片模板尝试制作。
? 下载 数据表格 (访问密码:PowerPlus)
? 下载 名片模板 (访问密码:PowerPlus)
设置多个变量
首先制作一份合格的 CSV 表格,需要将姓名、职位、手机号一一对应。
你可以在 Excel 中编辑这个表格,然后将其导出为 CSV UTF-8 (逗号分隔) 的格式。
为了方便理解,我们将图层的名称也修改为姓名、职位、手机号。
按上面提到的方法,为这三个图层分别设置变量,变量名就是姓名、职位、手机号。如果在图层右边出现 *
号说明这个图层已经被定义了。
批量导入
接下来像上面一样操作,来导入 CSV 格式的数据——
- 打开菜单栏的「图像 – 变量 – 数据组」(也可以在「文件 – 导入 – 变量数据组」中打开相同的页面)。
- 选择「导入 – 选择文件」来添加制作好的 CSV 文件,如果找不到,需要修改一下导入的格式。
但在导入 CSV 时会频频出现错误提示,而且提示往往不知所云,常见的错误提示有这几种——
- 无法将文本内容作为数据组解析。当前文档中有乱码字符。
- 无法将文本内容作为数据组解析。第 X 行中包含不完整的变量。
- 无法将文本内容作为数据组解析。文本文件第一行中变量名称不足/过多。
如果不能识别字符,最好是检查一下 CSV 是否保存为「CSV UTF-8」格式,然后在 Photoshop 中选择相同的文字编码。确保文字不会出现乱码。如果是 TXT 格式的表格,则需要保存为 ANSI 编码格式,否则也可能无法正确识别。
如果文字编码正确但仍提醒不能识别,那可能是由于变量名称中含有不支持的字符,或干脆改为英文字符,避免出现问题。
如果是后两个问题,可能的情况就更多一些,比如变量名称过多可能是因为在保存时多创建了一列空白字符,用 VSCode 打开时会发现多了一个逗号 ,
和一些空格,在保存时会保留在文件中。需要在 VSCode 等编辑器中将这些字符批量替换掉,删减掉一行。
如果提示「该文件已经在使用」,关掉后台的 Excel 即可。
查看数据是否正确导入
正是由于 Photoshop 严格的格式要求,只要能成功导入数据,基本上就不会有太多问题了。不会出现多一列或者少一列的情况。
如果你对导入的数据不放心,还可以在「图像 – 变量 – 数据组」中看到导入的数据。
这个界面中还可以做一些操作——
- 手动编辑:垃圾桶左侧的图标是「手动添加」,点击就可以在 Photoshop 中直接加上一行新的信息。
- 修改数据:下方的「变量」则可以直接修改现有的信息。
- 应用数据:右侧的「应用」是将你选中的信息应用到图片中查看效果。
接下来的导出 PSD、将 PSD 转换为 JPG 等操作和上面是一样的,依次执行即可。
需要注意的是,设置变量和导入数据组的操作会跟随 PSD 文件保存,如果你需要将这份文件发送给其他人但不想让对方获取人员姓名,建议先将其中的变量和数据组清空。
总结
批量替换文字是自动化处理中最为常见的一个操作,像 Word、Photoshop 等工具已经提供了一些批量替换的方法,在使用时只要符合要求的格式就可以正确执行操作。但偏偏 Photoshop 在报错时并不提供明确的解决方法,初次上手时很难想到是编码的问题。再加上不允许直接导出为图片,使得问题进一步复杂。
如果你已经跟着文章自己做了一遍,就会发现仅看操作其实并不复杂,反而是数据处理方面有些讲究。所以只要注意好文中提到的部分,相信下次遇到类似问题时也能很快解决。[/rihide]
暂无评论内容