[FIXED] Wie man – Photoshop -Skript – zwei Ebenen verschmelzen

Ausgabe

Meine Photoshop-Leinwand ist 900 x 600.

Die folgende Funktion nimmt Layer X und kopiert Layer X.

Es wird Layer X kopiert und unter Beibehaltung des Verhältnisses wird die Höhe auf 600 Pixel angepasst.var newdLayer

Es nimmt Ebene X und passt unter Beibehaltung des Verhältnisses die Breite auf 900 Pixel an und wendet die Gaußsche Unschärfe an. var blur.

Ich möchte dann Layer X copy und Layer X zusammenführen .

Anscheinend gibt es eine merge()Funktion, aber dafür muss man eine layerset. Nicht wirklich ein Profi in Javascript.

Wie werden die beiden Ebenen zusammengeführt?

(function (){

var docRef = activeDocument
var newdLayer = docRef.activeLayer.duplicate();

newdLayer;

    var startRulerUnits = app.preferences.rulerUnits;  
    app.preferences.rulerUnits = Units.PIXELS;  
    var bounds = newdLayer.bounds;  
    var height = bounds[3].value - bounds[1].value;
    var newSize = (100 / height) * 600;  
    newdLayer.resize(newSize, newSize, AnchorPosition.MIDDLECENTER);
    app.preferences.rulerUnits = startRulerUnits;  

var blur = docRef.activeLayer;

    var startRulerUnits = app.preferences.rulerUnits;  
    app.preferences.rulerUnits = Units.PIXELS;  
    var bounds = blur.bounds;  
    var width = bounds[2].value - bounds[0].value;
    var newSize = (100 / width) * 900;  
    blur.resize(newSize, newSize, AnchorPosition.MIDDLECENTER);
    app.preferences.rulerUnits = startRulerUnits;  
    blur.applyGaussianBlur(5)

blur;


})();

Lösung

Ich habe Ihre Funktion geändert, indem ich einige überflüssige Schritte eliminiert und am Ende einen Ausschnitt hinzugefügt habe, der das Erstellen einer neuen layerSet, das Verschieben der Ebenen newdLayerund blurin das Set und das Zusammenführen dieses Sets erleichtert:

(function (){

var docRef = activeDocument
var blur = docRef.activeLayer;
var newdLayer = blur.duplicate();

    var startRulerUnits = app.preferences.rulerUnits;
    app.preferences.rulerUnits = Units.PIXELS;

    // since we resize based on the initial size of the source layer, 
    // we don't need to get the bounds twice
    var bounds = blur.bounds;
    var height = bounds[3].value - bounds[1].value;
    var width = bounds[2].value - bounds[0].value;
    // declare 2 different vars for your sizes (there are better ways to do this, but
    // since you say you aren't a JavaScript pro, I figured I'd keep it simple)
    var newSize600 = (100 / height) * 600;
    var newSize900 = (100 / width) * 900;
    // resize your layers
    newdLayer.resize(newSize600, newSize600, AnchorPosition.MIDDLECENTER);
    blur.resize(newSize900, newSize900, AnchorPosition.MIDDLECENTER);
    // apply blur
    blur.applyGaussianBlur(5);

    // below creates the group, moves the layers to it and merges them. Feel free to just include this part
    // at the end of your function if you don't want to use the modified code above. 

    // create a new layer set
    var groupOne = docRef.layerSets.add();

    // move the blur layer inside the layer set and name the layer for posterity
    blur.move(groupOne, ElementPlacement.INSIDE);
    blur.name = "blur";

    // move the newdLayer inside and rename
    newdLayer.move(groupOne, ElementPlacement.INSIDE);
    newdLayer.name = "newdLayer";

    // merge the layer set and name the new layer
    var mergedGroup = groupOne.merge();
    mergedGroup.name = "newdLayer + blur";

    app.preferences.rulerUnits = startRulerUnits;

})();

Als Nebenbemerkung steht auch eine merge()Methode zur Verfügung artLayers, aber je nach Anzahl der Ebenen in Ihrem Dokument und der Reihenfolge der Ebenen können zusätzliche Schritte erforderlich sein, um die beiden Ebenen mit der artLayersMethode zusammenzuführen. Dies liegt daran, dass die artLayers merge()Methode einfach die aktive Ebene mit der darunter liegenden zusammenführt. Wenn Ebenen dupliziert werden, werden sie meiner Meinung nach auf Index 0 in der artLayersSammlung platziert, was die oberste Ebene in der Ebenenpalette wäre. Wenn Ihre Quellebene nicht bereits bei Index 0 war, müssen Sie die Ebenen vor sortieren merge().


Beantwortet von –
InternetRebel


Antwort geprüft von –
Cary Denson (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like