PS使用批量脚本生成海报实践

前言

设计朋友有需求做一批邀请函,有几十个人名,需要把人名加到海报中,PS里一个一个添加人名很麻烦,于是来问我有没有什么办法能够批量去添加。

希望把人名加到红框区域内

尝试用ps的脚本进行处理

准备

  • PS(版本2021,理论上新版本也支持,再之前的版本没测试过)
  • 人名名单
  • 字体(可选)
  • 海报底图

开始

先写了一个.jsx脚本。

什么是.jsx脚本?

.jsx 脚本是Adobe Photoshop的扩展脚本文件格式,它允许用户通过编写JavaScript代码来自动化Photoshop的任务和功能。这些脚本可以执行各种操作,比如打开和编辑图像、应用滤镜、创建新的图层或文本对象、导出文件等。

脚本内容

PS脚本.jsx

// 打开一个文档
var doc = app.activeDocument;

// 人名列表
var names = [ 
  "王旭",
  "李松达", 
  
]; // 用实际的名字替换这些

var c1 = new SolidColor();
 //255, 255, 126
with (c1.rgb) { red   = 26; green = 26; blue = 26; } 

// 获取桌面路径
var desktopPath = Folder.desktop.absoluteURI;

// 设置导出路径为桌面的 "ExportedImages" 文件夹
var exportPath = desktopPath + "/Images";


// 检查文件夹是否存在,如果不存在则创建
var exportFolder = new Folder(exportPath);
if (!exportFolder.exists) {
    exportFolder.create();
}

// 设置导出参数
var exportOptions = new ExportOptionsSaveForWeb();
exportOptions.format = SaveDocumentType.PNG;
exportOptions.PNG8 = false; 
exportOptions.transparency = true;

// 循环创建文本图层
for (var i = 0; i < names.length; i++) {
    // 创建文本图层
    var textLayer = doc.artLayers.add();
    textLayer.kind = LayerKind.TEXT;

    // 设置文本内容
    textLayer.textItem.contents = names[i];

	// 获取文本项(textItem)对象
	var textItem = textLayer.textItem;
	//var mytext=app.fonts.getByName("SimSun");
	// 设置字体
	textItem.font ="gongfanshouxiezhuanjiti"; // 你可以替换为你想要使用的字体名称
	
	// 设置字体大小
	textItem.size = 54; 
	textItem.justification = Justification.CENTER;
	
	//textItem.width = 236.21;
	//textItem.height=127.49;
	// 设置文本颜色(黄色)
	// var textColor = newRGBColor(); textColor.red = 255; textColor.green = 255; textColor.blue = 0;
	 textItem.color =c1; // 设置颜色
	 textItem.position = [2080, 2200]; // 设置位置
	 
    // 导出为 PNG 图片
    doc.exportDocument(new File(exportPath + "/output_" + names[i] + ".png"), ExportType.SAVEFORWEB, exportOptions);

    // 隐藏当前文本图层
    textLayer.visible = false;

   
}

人名整理

人名需要以json的格式来填写

// 人名列表
var names = [ 
  "王旭",
  "李松达", 
  
];

简单写了个Bat可以将人名转成json格式

@echo off
setlocal enabledelayedexpansion

set input_file=data.txt
set output_file=output.json

echo [ > %output_file%

for /f "tokens=* delims=" %%a in (%input_file%) do (
    set value=%%a
    echo "!value!", >> %output_file%
)

echo ] >> %output_file%

echo Conversion complete. Output saved to %output_file%

然后将处理好的人名复制到脚本中即可。

测试效果

打开PS,将准备好的海报底图导入进去。

先创建一个文本试下位置和效果。选择好你要的字体,这里我选择了龚凡手写体。名字为Dom。

字体选择

在脚本中需要设定批量添加的字体。

	// 设置字体
	textItem.font ="gongfanshouxiezhuanjiti"; // 你可以替换为你想要使用的字体名称

那么这个gongfanshouxiezhuanjiti是什么?为什么不填龚凡手写体呢?

这个其实就是字体的font-family

什么是font-family?

font-family 是一个CSS(层叠样式表)属性,用于为网页上的元素指定优先使用的字体列表。当在网页中设置字体时,font-family 允许你按优先顺序定义一个或多个字体名称,浏览器会根据这个列表来选择第一个可用的字体渲染文本。

如何查找font-family?

MAC

进入字体册

选中一个字体,点击信息按钮,右侧的PostScript名称就是font-family了。

WIN

浏览器开发者工具:

在网页中,右键点击想要查看字体的文本。

选择“检查”(Inspect)或者“审查元素”(Inspect Element)。

在开发者工具中,找到“Styles”(样式)面板,这里会列出所有应用到该元素的CSS样式,包括 font-family。

执行脚本

PS点击脚本--浏览--选中.jsx脚本。

然后静等脚本执行完毕即可。

生成的海报会在桌面images文件夹里,以每个人的人名来命名。

总结

第一次尝试jsx,有些功能可以更简化,懒得写了。效果达到了就可以。在此记录下,防止后面忘了。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值