使用组名称Photoshop保存多个文件

时间:2019-05-31 12:32:43

标签: photoshop photoshop-script

我的PSD结构

Group myname
layer -> Visible
Layer -> Hidden

Group 2randomname
layer -> Visible
Layer -> Hidden

然后继续...

我正在尝试将导出组另存为png,在使用文件->导出->图层到文件时可以正常工作,但是我的问题是它没有使用组名,我想为每个文件包括组名,这是选择所有组并右键单击->导出,然后选择PNG时,这些图层都具有组名,但问题在于它会自动修剪画布,并且没有避免修剪的选项。

是否有任何代码或脚本可以做到这一点?任何指示或帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我猜是这样吗?

结果:enter image description here

function main()
{

    var topLayers = activeDocument.layers, // will export all top level layers (groups, backgorund layer, etc)
        exportFolder = Folder.selectDialog();

    if (exportFolder == null) return false;;

    for (var i = 0; i < topLayers.length; i++)
    {
        activeDocument.activeLayer = topLayers[i];
        toggleVisibility();
        savePng24(topLayers[i].name);
        toggleVisibility();
    }

    function savePng24(fileName)
    {
        var pngOpts = new ExportOptionsSaveForWeb;
        pngOpts.format = SaveDocumentType.PNG
        pngOpts.PNG8 = false;
        pngOpts.transparency = true;
        activeDocument.exportDocument(new File(exportFolder + "/" + fileName + ".png"), ExportType.SAVEFORWEB, pngOpts);
    }; // end of savePng24()

    function toggleVisibility()
    {
        var desc = new ActionDescriptor();
        var list = new ActionList();
        var ref = new ActionReference();
        ref.putEnumerated(cTID('Lyr '), cTID('Ordn'), cTID('Trgt'));
        list.putReference(ref);
        desc.putList(cTID('null'), list);
        desc.putBoolean(cTID('TglO'), true);
        executeAction(cTID('Shw '), desc, DialogModes.NO);
    }; // end of toggleVisibility()

    function cTID(s)
    {
        return app.charIDToTypeID(s);
    };

    function sTID(s)
    {
        return app.stringIDToTypeID(s);
    };

}
app.activeDocument.suspendHistory("temp", "main()");