So setzen Sie die vertikale/horizontale Skalierung von Smart Objects per Skript auf 100 Prozent zurück

Ich möchte ein Skript schreiben, um die vertikale/horizontale Skalierung eines Smart-Objekts zurückzusetzen . Ich habe versucht, ArtLayer und viele Eigenschaften davon zu verwenden, aber es ist kein Erfolg.

Beispiel: B:100% - H:75%

app.activeDocument.activeLayer.resize(200,200);

=> B:200% - H:150%

app.activeDocument.activeLayer.resize(100,100);

=> Es ist nichts passiert. ItB:200% - H:150%

Gibt es eine Möglichkeit, die vertikale/horizontale Skalierung eines SO zu erhalten und auf 100 % (Originalskalierung) zu setzen?

Danke

Ich habe herumgebastelt und versucht, etwas zu programmieren, das funktioniert, aber es scheint, dass intelligente Objekte nicht in der Größe verändert werden können. Sie scheinen ignoriert zu werden und nur gerasterte Ebenen werden geändert. Ich verwende die activeLayer.resize, nachdem ich die Einheiten auf PERCENT geändert habe

Antworten (1)

Hier ist "funktionierender" Code:

#target photoshop
try {
  var doc = app.activeDocument;

  var layers = doc.artLayers;

  var size = dialog();

  var defaultRulerUnits = app.preferences.rulerUnits;
  app.preferences.rulerUnits = Units.PERCENT;


  for (var i = 0; i < doc.artLayers.length -1; i++) {

    var activeLayer = doc.artLayers.getByName(doc.artLayers[i].name);

    var orUnits = app.preferences.rulerUnits;

    app.preferences.rulerUnits = Units.PERCENT;

    activeLayer.resize(size, size, AnchorPosition.MIDDLECENTER);

    app.preferences.rulerUnits = orUnits;

  }


} catch (e) {
  // alert( e );
}


function dialog() {

  // Dialog box...
  var myWindow = new Window("dialog", "Resize Each Layer");

  // Keeps things inline
  myWindow.orientation = "row";

  // Informational text
  myWindow.add("statictext", undefined, "New size ( percentage ):");

  // This is the box where the size is inserted
  var myText = myWindow.add("edittext", undefined, "");
  myText.characters = 5;
  myText.active = true;

  // Ok....
  myWindow.add("button", undefined, "OK");
  if (myWindow.show() == 1) return myText.text;

} 

Dies ist eine unvollkommene Lösung, die darauf basiert, wie Ereignisse geordnet werden müssen.

Um das Skript aktuell zu verwenden:

  1. Öffnen Sie eine neue PSD-Datei, erstellen Sie mit dem Rechteck-Werkzeug etwa 3 verschiedenfarbige Smart-Objekte.
  2. Führen Sie dann das Skript aus.
  3. Versuchen Sie, einen Wert wie 50 einzugeben. Dies sollte dazu führen, dass die Größe jedes Objekts auf 50 % seiner aktuellen Größe geändert wird.
  4. Versuchen Sie als Nächstes das Skript erneut (Sie müssen nichts in Ihrer PSD rückgängig machen) und versuchen Sie, 150 einzugeben.

    Dies sollte zu Objekten führen, die das 2,5-fache ihrer alten Größe haben.