使用导出图像脚本在Photoshop中打开和关闭多个图层

时间:2017-05-05 11:37:53

标签: photoshop photoshop-script

我在Photoshop中有1组,其中有多个图像默认隐藏,除了第一个,我希望逐个显示每个图像除了第一个,然后导出为合并的第一层图像

注意:请参阅屏幕截图Layer

有人可以指出我是否可以使用脚本或任何操作?

我从来没有在Photoshop中编写脚本,而是试图自己解决这个问题。

1 个答案:

答案 0 :(得分:0)

编辑了整个帖子,但此脚本涵盖了原始脚本的可用性(仅适用于单个图层组),并且还可以扩展到所有图层组。

脚本从文件中的每个图层组中获取图层,并迭代所有图层组,除了给定组中的第一个图层组,打开和关闭它们以进行保存。对于给定的组迭代,每个组中的第一层始终可见。导出为PNG,但您可以调整所需的任何内容 - 导出选项,路径,文件名等。为CS6创建,但应该适用于任何版本,只需检查它。

您可能需要的更多信息,请参阅参考手册。只需谷歌 Photoshop CS6 / CC Javascript参考

下面的代码,只需使用记事本复制粘贴并保存为 jsx 文件。您可以使用ExtendScript Toolkit对其进行测试(它已与Adobe中的任何内容一起安装,您只需要找到它)。如果它按预期工作,将文件放在 Adob​​e \ Adob​​e 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
}