Automatisieren Sie das Hinzufügen einer individuellen Alle-Maske zu vielen Ebenen in Photoshop?

Was ist in Adobe Photoshop CC, eine schnelle Möglichkeit, jeder Ebene in einem Dokument mit einer großen Anzahl von Ebenen (z. B. 100 Ebenen) individuelle Standardmasken (Alle anzeigen) hinzuzufügen ?

Ich brauche Einzelmasken, keine Gruppenmasken.

Ich kann ALT+drageine Maske manuell auf andere Ebenen duplizieren oder einfach durch die ausgewählten Ebenen scrollen und dann auf die Maskenschaltfläche am unteren Rand des LayersBereichs klicken, aber ich versuche, einen automatisierten Prozess zu erstellen, daher sind dies keine wünschenswerten Optionen.

Vielleicht gibt es eine Skriptlösung, um allen offenen Ebenen individuelle Vollmasken hinzuzufügen?


Hintergrundgeschichte

Gemäß der Problemumgehung hier, um massenhaft png-24 Bilder einer gemeinsamen Größe mit teilweiser Transparenz zu exportieren png-8, mache ich File> Scripts> Load Files Into Stack, wähle alle Ebenen aus, klicke mit der rechten Maustaste auf die Auswahl und wähle schließlich Quick Export as png-8aus dem angezeigten Klickoptionsmenü.

Das einzige Problem ist, dass Quick Export as png-8eine beschnittene Kopie gespeichert wird, ohne die Leinwandgröße zu berücksichtigen. Einzeln hineinzugehen Export Asfunktioniert, wenn ich die Leinwandgröße manuell ändere, aber alle Ebenen auswähle und eine gemeinsame Leinwandgröße zentriere die Bilder ...

Aber ich habe einen Weg gefunden, mit der rechten Maustaste Quick Export...die Leinwandposition zu respektieren und nicht zuzuschneiden – füge eine 100% Füllmaske hinzu (also ganz weiß). Dies hat keine Auswirkung auf das Bild, außer dass der transparente Begrenzungsrahmen vor dem Zuschneiden auf Quick Export.../ bewahrt wird Export As.

Das Hinzufügen einzelner Masken macht jedoch die individuelle Zeitersparnis zunichte. Daher muss ich einen Weg finden, sie schnell zu jeder Ebene hinzuzufügen (Gruppenmaske funktioniert nicht).

Antworten (2)

Ich denke, der einfachste Weg wäre, eine Aktion mit einer zugewiesenen F-Taste zu erstellen. Sie müssen immer noch eine Taste drücken ... aber es wäre schneller.

  • Markieren Sie die oberste Ebene im Stapel
  • Erstellen Sie eine neue Aktion und weisen Sie ihr eine F-Taste zu, starten Sie die Aufnahme
  • WählenLayer > Layer Mask > Reveal All
  • Halten Sie die Option/AltTaste gedrückt und tippen Sie auf die linke Klammertaste ( [) – Dies sollte die nächste Ebene im Ebenenstapel hervorheben
  • Stoppen Sie die Aufzeichnung der Aktion

Markieren Sie nun eine Ebene, tippen Sie auf die zugewiesene F-Taste ... und tippen Sie weiter, bis Sie das untere Ende des Ebenenstapels erreichen.

Geben Sie hier die Bildbeschreibung ein

Ich bin mir sicher, dass dies auch per Skript möglich wäre, aber das liegt außerhalb meines Steuerhauses.

Ich habe hier ein Skript gefunden, das jeder Ebene eine "Alle ausblenden"-Ebenenmaske hinzufügt

Also habe ich ein bisschen mehr gegraben und herausgefunden, wie ich es von „Alle verbergen“ auf „Alle anzeigen“ ändern kann.

Bitte schön:

// 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 );
    }