[FIXED] Photoshop JavaScript – Die Größe mehrerer Schichten ändern

Ausgabe

Ich habe ein Skript in Photoshop, mit dem ich die Größe einer Ebene an die Bildgrenzen anpassen und dabei die Proportionen beibehalten kann.

Der Code ist der Seguent:

    var Document = app.activeDocument;
    var BND = app.activeDocument.activeLayer.bounds;
    var IHeight = (BND[3] - BND[1]);
    var IWidth = (BND[2] - BND[0]);
    if (IWidth >= IHeight) {
        Document.activeLayer.resize ((Document.width / IWidth * 100), (Document.width / IWidth * 100), AnchorPosition.MIDDLECENTER);
        }
    else {
        Document.activeLayer.resize ((Document.height / IHeight * 100), (Document.height / IHeight * 100), AnchorPosition.MIDDLECENTER);
        }

Das Problem ist, dass es nur die Größe der aktiven Ebene ändert.

Ich versuche, den seguent-Code zu integrieren, der alle Ebenen auswählt:

    var NAD = new ActionDescriptor ();
    var NAR = new ActionReference ();
    NAR.putEnumerated (charIDToTypeID ("Lyr "), charIDToTypeID ("Ordn"), charIDToTypeID ("Trgt"));
    NAD.putReference (charIDToTypeID ("null"), NAR);
    executeAction (stringIDToTypeID ("selectAllLayers"), NAD, DialogModes.NO);

Ich möchte alle Ebenen zusammen in der Größe ändern, damit sie das gleiche Seitenverhältnis zueinander beibehalten können, sodass ich die Größe nicht mit einer Schleife ändern kann oder die Proportionen verloren gehen würden, wenn alle Ebenen auf die gleiche Größe wie die Leinwand transformiert würden .

Haben Sie eine Idee, wie dies geschehen könnte?


Ich habe bereits versucht, activeLayer durch Ebenen oder artLayers zu ersetzen, aber ich erhalte „Error 1302: No such element“ und weiß nicht, wie ich das Problem lösen soll.

Lösung

Da ich keine Lösung finden konnte, habe ich mich letztendlich dafür entschieden, die Ebenen zu gruppieren und die Gruppierung aufzuheben, sobald die Größenänderung abgeschlossen war. Der letzte Code ist der Seguent:

    var Document = app.activeDocument;
// Select all layers with Action Manager
    (NAR = new ActionReference ()).putEnumerated (ID ("layer"), ID ("ordinal"), ID ("targetEnum"));
    (NAD = new ActionDescriptor ()).putReference (ID ("null"), NAR);
    executeAction (ID ("selectAllLayers"), NAD, DialogModes.NO);
// Group selected layers with Action Manager
    (NAR = new ActionReference ()).putClass (ID ("layerSection"));
    (NAD = new ActionDescriptor ()).putReference (ID ("null"), NAR);
    (NAR2 = new ActionReference ()).putEnumerated (ID ("layer"), ID ("ordinal"), ID ("targetEnum"));
    NAD.putReference (ID ("from"), NAR2);
    (NAR3 = new ActionDescriptor ()).putString (ID ("name"), """Temporary_Group""");
    NAD.putObject (ID ("using"), ID ( "layerSection" ), NAR3);
    executeAction (ID ("make"), NAD, DialogModes.NO);
    }
// Select temporary group with Action Manager
    (NAR = new ActionReference ()).putName (ID ("layer"), "Temporary_Group");
    (NAD = new ActionDescriptor ()).putReference (ID ("null"), NAR);
    executeAction (ID ("select"), NAD, DialogModes.NO);

    var BND = app.activeDocument.activeLayer.bounds;
    var IHeight = (BND[3] - BND[1]);
    var IWidth = (BND[2] - BND[0]);
    if (IWidth >= IHeight) {
        Document.activeLayer.resize ((Document.width / IWidth * 100), (Document.width / IWidth * 100), AnchorPosition.MIDDLECENTER);
        }
    else {
        Document.activeLayer.resize ((Document.height / IHeight * 100), (Document.height / IHeight * 100), AnchorPosition.MIDDLECENTER);
        }
// Delete temporary group with Action Manager
    (NAR = new ActionReference ()).putEnumerated (ID ("layer"), ID ("ordinal"), ID ("targetEnum"));
    (NAD = new ActionDescriptor ()).putReference (ID ("null"), NAR);
    executeAction (ID ("ungroupLayersEvent"), NAD, DialogModes.NO);
    }
// Deselect all layers with Action Manager
    (NAR = new ActionReference ()).putEnumerated (ID ("layer"), ID ("ordinal"), ID ("targetEnum"));
    (NAD = new ActionDescriptor ()).putReference (ID ("null"), NAR);
    executeAction (ID ("selectNoLayers"), NAD, DialogModes.NO);


Beantwortet von –
IDJSGUS


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

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

You May Also Like