我在Photoshop中有1组,其中有多个图像默认隐藏,除了第一个,我希望逐个显示每个图像除了第一个,然后导出为合并的第一层图像
注意:请参阅屏幕截图Layer
有人可以指出我是否可以使用脚本或任何操作?
我从来没有在Photoshop中编写脚本,而是试图自己解决这个问题。
答案 0 :(得分:0)
编辑了整个帖子,但此脚本涵盖了原始脚本的可用性(仅适用于单个图层组),并且还可以扩展到所有图层组。
脚本从文件中的每个图层组中获取图层,并迭代所有图层组,除了给定组中的第一个图层组,打开和关闭它们以进行保存。对于给定的组迭代,每个组中的第一层始终可见。导出为PNG,但您可以调整所需的任何内容 - 导出选项,路径,文件名等。为CS6创建,但应该适用于任何版本,只需检查它。
您可能需要的更多信息,请参阅参考手册。只需谷歌 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
}