Сохранение нескольких файлов с именем группы Photoshop - PullRequest
0 голосов
/ 31 мая 2019

Моя структура PSD

Group myname
layer -> Visible
Layer -> Hidden

Group 2randomname
layer -> Visible
Layer -> Hidden

и продолжается ...

Я пытаюсь сохранить группы экспорта в формате png, работает файл при использовании файла -> Экспорт -> Слои вФайл, но моя проблема заключается в том, что он не использует имя группы, я хочу включить имя группы для каждого файла, это работает, когда выбираются все группы, и щелкните правой кнопкой мыши -> экспорт, так как при выборе PNG слои имеют имена групп, но проблема заключается в том, чтоэто автоматически обрезает холст, и нет возможности избежать обрезки.

Есть ли какой-нибудь код или скрипт, который может это сделать?Любые направления или помощь приветствуется.

1 Ответ

0 голосов
/ 31 мая 2019

Я думаю, что-то вроде этого?

Результат: 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()");
...