>

【Photoshop】レイヤーを指定(選択)するスクリプト


 実際に選択状態になるわけではなくスクリプトで指定したレイヤーに対しremove()rotate()などのメソッドで何かする、という動作になります。

1.配列から選択

var doc=app.activeDocument;
var lay=doc.artLayers[0];
alert(lay);

 artLayers、layersはコレクションオブジェクトで、[レイヤー]パネルにあるレイヤーが格納されています。いちばん上が0番目となっているので、このスクリプトだと「いちばん上のレイヤー」を指しています。

2.名前で選択

var doc=app.activeDocument;
var lay=doc.artLayers.getByName("レイヤー 4");
alert(lay);

 artLayersオブジェクトの中から、「レイヤー4」という名称のレイヤーを指定します。同じ名称のレイヤーがある場合は、いちばん上にある「レイヤー4」が指定されます。

3.現在選択しているレイヤー

var doc=app.activeDocument;
var lay=doc.activeLayer;
alert(lay);

 こちらは、「[レイヤー]パネルで選択されているレイヤー」が指定されます。複数選択していた場合はコレクションオブジェクトにならず、「選択しているレイヤーの中でいちばん上にあるもの」が指定されます。

4.選択しているレイヤーがテキストレイヤーだった場合、ドキュメントサイズを書き込む

var doc=app.activeDocument;
var sizes=[doc.width,doc.height];
var lay=doc.activeLayer;
if(lay.kind == LayerKind.TEXT){
    lay.textItem.contents="幅"+sizes[0]+"、"+"高さ"+sizes[1];
}else{
};

 こちらは、「[レイヤー]パネルで選択されているレイヤー」がテキストレイヤーの場合、そのレイヤーに幅、高さのドキュメントサイズを書き込みます。

5.実践

 「不透明度81%未満のレイヤーにぼかし処理」してみましょう。

var doc=app.activeDocument;
var lays=doc.artLayers;
var layCount=lays.length;
for(var i=layCount-1; i > -1; i--){
  if(lays[i].opacity < 81){
    lays[i].applyGaussianBlur(25);//ぼかし(ガウス)、半径25px
  }
}

 activeLayerの挙動を考えると[レイヤー]パネルで複数選択しているものに何かする、というのはScriptingListenerを使わないとできないので、「レイヤーそれぞれの設定値を条件にしてひとつずつ処理」を繰り返すコードにしています。

スクリプト実行前
スクリプト実行前

スクリプト実行後
スクリプト実行後

動画

ダウンロード

               

広告

コメントする

★マークのある項目が必須項目です。メールアドレスは公開されません。

CAPTCHA


内容を確認して、送信してください(プレビューはされません)。コメント内では<strong>、<code>、<em>のタグが使えます。

こちらもいかが

新しい投稿

【InDesign】丸数字の番号を上下するスクリプト
【InDesign】丸数字の番号を上下するスクリプト

過去の投稿

[巡回中]水の精霊