Photoshop脚本 Application 应用对象
app 是 Photoshop ExtendScript 的全局根对象,所有操作都从它开始。无需 import 或 require,脚本中直接使用。
核心属性
活动文档与文档集合
| 属性 | 类型 | 说明 |
|---|---|---|
app.activeDocument | Document | 当前激活的文档,没有打开文档时为 null |
app.documents | Documents | 所有已打开文档的集合 |
javascript
var activeDoc = app.activeDocument;
if (activeDoc) {
alert("当前文档: " + activeDoc.name);
}
// 遍历所有文档
var i;
for (i = 0; i < app.documents.length; i++) {
alert("文档 " + i + ": " + app.documents[i].name);
} 颜色设置
javascript
// 读取前景色和背景色(SolidColor 对象)
var fg = app.foregroundColor;
var bg = app.backgroundColor;
alert("前景色 RGB: " + fg.rgb.red + ", " + fg.rgb.green + ", " + fg.rgb.blue); 其他常用属性
javascript
// 显示模式
app.displayDialogs = DialogModes.NO; // 静默模式
// 版本信息
alert("Photoshop 版本: " + app.version);
// 当前工具
alert("当前工具: " + app.currentTool);
// 应用程序路径
alert("Photoshop 路径: " + app.path.fsName);
// 可用内存
alert("可用内存: " + app.freeMemory + " KB");
// 支持的系统字体数量
alert("系统支持 " + app.fonts.length + " 种字体"); 文档操作
app.documents.add()
创建新文档。参数依次为:宽度、高度、分辨率、名称、色彩模式、初始填充:
javascript
var doc = app.documents.add(
800, // 宽度(像素)
600, // 高度(像素)
72, // 分辨率(PPI)
"新文档", // 文档名称
NewDocumentMode.RGB, // 色彩模式
DocumentFill.WHITE // 初始填充(白色)
); app.open()
打开已有文件:
javascript
var file = new File("C:/我的文档/设计稿.psd");
var doc = app.open(file);
alert("已打开: " + doc.name); app.openDialog()
弹出系统文件选择对话框,返回用户选择文件的数组:
javascript
var files = app.openDialog("选择要打开的 PSD 文件", "*.psd;*.tif", true);
if (files !== null) {
for (var i = 0; i < files.length; i++) {
var doc = app.open(files[i]);
alert("已打开: " + doc.name);
}
} 实用方法
app.doAction()
执行一个已录制的动作:
javascript
app.doAction("动作名称", "动作组名称"); app.beep() / app.bringToFront()
javascript
app.beep(); // 系统提示音
app.bringToFront(); // 将 Photoshop 窗口置前
app.refresh(); // 刷新屏幕(长时间脚本中定期调用) app.runMenuItem()
按菜单 ID 执行菜单命令:
javascript
// 执行"全选"命令
app.runMenuItem(app.charIDToTypeID("slct")); app.batch()
批处理文件夹中的文件:
javascript
var sourceFolder = new Folder("C:/图片输入");
var destFolder = new Folder("C:/图片输出");
app.batch(
sourceFolder, // 源文件夹
"动作名称", // 动作名称
destFolder, // 目标文件夹
FileNameRule.CASE_EXTENSION // 命名规则
); app.doProgress()
显示进度条,第二个参数传入要执行的代码字符串:
javascript
app.doProgress("正在处理...", "processTask()");
function processTask() {
var i;
for (i = 0; i < 100; i++) {
updateProgress(i, 100);
changeProgressText("正在处理... " + (i + 1) + "%");
app.refresh();
}
} app.charIDToTypeID() / app.stringIDToTypeID()
类型 ID 转换,Action Manager 编程中使用:
javascript
var charID = app.charIDToTypeID("Chnl"); // 4 字符 ID 转类型 ID
var stringID = app.stringIDToTypeID("channel"); // 字符串 ID 转类型 ID app.executeAction() / app.executeActionGet()
完整示例
创建一个新文档,添加色块图层,导出为 JPEG:
javascript
app.displayDialogs = DialogModes.NO;
// 新建文档
var doc = app.documents.add(640, 480, 72, "示例", NewDocumentMode.RGB, DocumentFill.WHITE);
// 填充背景色块
var fillColor = new SolidColor();
fillColor.rgb.hexValue = "F0F0FA";
doc.selection.selectAll();
doc.selection.fill(fillColor, ColorBlendMode.NORMAL, 100, false);
doc.selection.deselect();
// 添加色块图层
var colorLayer = doc.artLayers.add();
colorLayer.name = "色块";
var blockColor = new SolidColor();
blockColor.rgb.red = 220;
blockColor.rgb.green = 50;
blockColor.rgb.blue = 50;
doc.selection.select([[100, 100], [540, 100], [540, 380], [100, 380]], SelectionType.REPLACE, 0, false);
doc.selection.fill(blockColor, ColorBlendMode.NORMAL, 100, false);
doc.selection.deselect();
// 另存并关闭
var jpgFile = new File("C:/Users/Administrator/Desktop/输出.jpg");
var jpgOptions = new JPEGSaveOptions();
jpgOptions.quality = 12;
doc.saveAs(jpgFile, jpgOptions, true, Extension.LOWERCASE);
doc.close(SaveOptions.DONOTSAVECHANGES);
alert("导出完成!");