Автоматизировать добавление отдельной маски «Показать все» ко многим слоям в Photoshop?

Какой Adobe Photoshop CCбыстрый способ добавить отдельные маски по умолчанию (Показать все) к каждому слою в документе с большим количеством слоев (скажем, 100 слоев)?

Мне нужны индивидуальные маски, а не групповые.

Я могу вручную ALT+dragдублировать маску на другие слои или просто прокрутить выбранный каждый слой, а затем нажать кнопку маски в нижней части панели Layers, но я пытаюсь создать автоматизированный процесс, поэтому это нежелательные варианты.

Возможно, есть скриптовое решение для добавления отдельных масок полного раскрытия ко всем открытым слоям?


Предыстория

В соответствии с обходным путем здесь, чтобы экспортировать в массовом порядке png-24 изображения общего размера с png-8частичной прозрачностью, я делаю File> Scripts> Load Files Into Stack, выбираю все слои, щелкаю правой кнопкой мыши по выделению и, наконец, выбираю Quick Export as png-8из всплывающего меню параметров щелчка.

Единственная проблема в том, что Quick Export as png-8сохраняет обрезанную копию, не учитывая размер холста. Переход по отдельности Export Asбудет работать, если я вручную изменю размер холста, но выбрав все слои и установив общий размер холста, центрирует изображения...

Но я нашел способ получить правый щелчок, Quick Export...чтобы уважать положение холста, а не обрезать - добавить маску заполнения 100% (чтобы все было белым). Это не влияет на изображение, кроме как предохранить прозрачную ограничивающую рамку от обрезки Quick Export.../ Export As.

Однако добавление отдельных масок сводит на нет индивидуальную экономию времени. Следовательно, мне нужно найти способ быстро добавить их на каждый слой (групповая маска не работает).

Ответы (2)

Я думаю, что самым простым способом было бы создать действие с назначенной клавишей F. Вам все равно придется нажимать на клавишу... но так будет быстрее.

  • Выделите самый верхний слой в стеке
  • Создайте новое действие и назначьте ему клавишу F, начните запись
  • ВыбиратьLayer > Layer Mask > Reveal All
  • Удерживая Option/Altнажатой клавишу, коснитесь клавиши левой квадратной скобки ( [) — это должно выделить следующий слой в стеке слоев.
  • Остановить запись действия

Теперь выделите слой, нажмите назначенную клавишу F... и продолжайте нажимать, пока не дойдете до нижней части стека слоев.

введите описание изображения здесь

Я уверен, что это тоже можно было бы написать в сценарии, но это не в моей компетенции.

Я нашел скрипт, который добавляет маску слоя «Скрыть все» к каждому слою здесь.

Поэтому я еще немного покопался и понял, как изменить его с «Скрыть все» на «Показать все».

Ну вот:

// RevealMask-AllLayers – Adds a 'Reveal All' mask to all layers

#target photoshop

if(app.documents.length>0){
    var docRef = activeDocument;
    var layerNum = docRef.layers.length;

    for(var i=0;i<layerNum;i++){
        docRef.activeLayer = docRef.layers[i];
        if(!docRef.activeLayer.isBackgroundLayer){
            try{addMask ()}
            catch(e){}
            }
        }
    }
else{alert('There are no open files')};

function addMask(){
    var idMk = charIDToTypeID( "Mk  " );
        var desc2 = new ActionDescriptor();
        var idNw = charIDToTypeID( "Nw  " );
        var idChnl = charIDToTypeID( "Chnl" );
        desc2.putClass( idNw, idChnl );
        var idAt = charIDToTypeID( "At  " );
            var ref1 = new ActionReference();
            var idChnl = charIDToTypeID( "Chnl" );
            var idChnl = charIDToTypeID( "Chnl" );
            var idMsk = charIDToTypeID( "Msk " );
            ref1.putEnumerated( idChnl, idChnl, idMsk );
        desc2.putReference( idAt, ref1 );
        var idUsng = charIDToTypeID( "Usng" );
        var idUsrM = charIDToTypeID( "UsrM" );
        var idHdAl = charIDToTypeID( "RvlA" );
        desc2.putEnumerated( idUsng, idUsrM, idHdAl );
    executeAction( idMk, desc2, DialogModes.NO );
    }