使用导出图像脚本在 Photoshop 中打开和关闭多个图层
Turning Multiple Layers On and Off in Photoshop with export image Script
我在 photoshop 中有 1 个组,其中有多个图像默认隐藏,除了第一个,我希望逐个显示每个图像,除了第一个,然后导出为合并第一层的图像
注意 : 请看截图Layer
谁能给我指明方向,是否可以使用脚本或任何操作?
我从来没有在 Photoshop 中编写过脚本,但我试图自己解决这个问题。
整个 post 已编辑,但此脚本涵盖了原始脚本的可用性(仅适用于单个图层组)并且还将自身扩展到所有图层组。
脚本从文件中的每个图层组中获取图层并遍历除给定组中的第一个图层之外的所有图层,打开和关闭它们以进行保存。对于给定的组迭代,每个组中的第一层始终可见。导出为 PNG,但您可以根据需要调整任何内容 - 导出选项、路径、文件名等。为 CS6 创建但应该适用于任何版本,只需检查一下即可。
您可能需要的任何更多信息都在参考手册中。 Google 用于 Photoshop CS6/CC Javascript 参考 。
代码如下,只需使用记事本复制粘贴并另存为 jsx 文件即可。您可以使用 ExtendScript Toolkit 对其进行测试(它已与 Adobe 的任何软件一起安装,您只需要找到它)。如果它按预期工作,请将文件放在 Adobe\Adobe Photoshop CS6(64 位)\Presets\Scripts 文件夹中,重新启动 Photoshop,脚本将可以通过 文件 > 脚本 菜单。如果需要多次重复此操作,您还可以为其绑定键盘快捷键。干杯!
#target Photoshop
if (documents.length == 0) {
alert("nothing opened");
} else {
// start
//setup
var file = app.activeDocument;
var groupsAmount = file.layerSets.length; // get the layer groups
// iterate through groups
for (var k=0; k < groupsAmount; k++) {
hideAllLayers();
var images = file.layerSets[k].layers; // get the layers from the given group
file.layerSets[k].visible = true;
images[0].visible = true; // show the first layer in this group
// begin "i" from 1 to start from the 2nd layer
for (var i=1; i < images.length; i++) {
images[i].visible = true;
exportimage(images[i].name);
images[i].visible = false;
}
}
// function used to export image (adjust as you want accoring to the manual)
function exportimage(name){
var options = new ExportOptionsSaveForWeb();
options.format = SaveDocumentType.PNG;
options.PNG8 = false;
options.transparency = true;
options.optimized = true;
// adjust path & name
file.exportDocument(File(file.path+"/"+name+".png"),ExportType.SAVEFORWEB, options);
}
// function to hide all layers
// simplified version of http://morris-photographics.com/photoshop/scripts/downloads/Hide%20All%20Layers%202-1-0.jsx
function hideAllLayers() {
var ref = new ActionReference();
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
var desc = new ActionDescriptor();
desc.putReference(cTID('null'), ref);
executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
var ref = new ActionReference();
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
var list = new ActionList();
list.putReference(ref);
var desc = new ActionDescriptor();
desc.putList(cTID('null'), list);
executeAction(cTID('Hd '), desc, DialogModes.NO);
}
function cTID(s) {return app.charIDToTypeID(s);}
function sTID(s) {return app.stringIDToTypeID(s);}
//end
}
我在 photoshop 中有 1 个组,其中有多个图像默认隐藏,除了第一个,我希望逐个显示每个图像,除了第一个,然后导出为合并第一层的图像
注意 : 请看截图Layer
谁能给我指明方向,是否可以使用脚本或任何操作?
我从来没有在 Photoshop 中编写过脚本,但我试图自己解决这个问题。
整个 post 已编辑,但此脚本涵盖了原始脚本的可用性(仅适用于单个图层组)并且还将自身扩展到所有图层组。
脚本从文件中的每个图层组中获取图层并遍历除给定组中的第一个图层之外的所有图层,打开和关闭它们以进行保存。对于给定的组迭代,每个组中的第一层始终可见。导出为 PNG,但您可以根据需要调整任何内容 - 导出选项、路径、文件名等。为 CS6 创建但应该适用于任何版本,只需检查一下即可。
您可能需要的任何更多信息都在参考手册中。 Google 用于 Photoshop CS6/CC Javascript 参考 。
代码如下,只需使用记事本复制粘贴并另存为 jsx 文件即可。您可以使用 ExtendScript Toolkit 对其进行测试(它已与 Adobe 的任何软件一起安装,您只需要找到它)。如果它按预期工作,请将文件放在 Adobe\Adobe Photoshop CS6(64 位)\Presets\Scripts 文件夹中,重新启动 Photoshop,脚本将可以通过 文件 > 脚本 菜单。如果需要多次重复此操作,您还可以为其绑定键盘快捷键。干杯!
#target Photoshop
if (documents.length == 0) {
alert("nothing opened");
} else {
// start
//setup
var file = app.activeDocument;
var groupsAmount = file.layerSets.length; // get the layer groups
// iterate through groups
for (var k=0; k < groupsAmount; k++) {
hideAllLayers();
var images = file.layerSets[k].layers; // get the layers from the given group
file.layerSets[k].visible = true;
images[0].visible = true; // show the first layer in this group
// begin "i" from 1 to start from the 2nd layer
for (var i=1; i < images.length; i++) {
images[i].visible = true;
exportimage(images[i].name);
images[i].visible = false;
}
}
// function used to export image (adjust as you want accoring to the manual)
function exportimage(name){
var options = new ExportOptionsSaveForWeb();
options.format = SaveDocumentType.PNG;
options.PNG8 = false;
options.transparency = true;
options.optimized = true;
// adjust path & name
file.exportDocument(File(file.path+"/"+name+".png"),ExportType.SAVEFORWEB, options);
}
// function to hide all layers
// simplified version of http://morris-photographics.com/photoshop/scripts/downloads/Hide%20All%20Layers%202-1-0.jsx
function hideAllLayers() {
var ref = new ActionReference();
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
var desc = new ActionDescriptor();
desc.putReference(cTID('null'), ref);
executeAction(sTID('selectAllLayers'), desc, DialogModes.NO);
var ref = new ActionReference();
ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
var list = new ActionList();
list.putReference(ref);
var desc = new ActionDescriptor();
desc.putList(cTID('null'), list);
executeAction(cTID('Hd '), desc, DialogModes.NO);
}
function cTID(s) {return app.charIDToTypeID(s);}
function sTID(s) {return app.stringIDToTypeID(s);}
//end
}