Photoshopで選択したレイヤーのサイズを取得し、同サイズのシェイプを作成するスクリプトを紹介します。
このスクリプトを使えば、選択レイヤーと同じ大きさのシェイプをすばやく作成できます。


目次
選択しているレイヤーの座標を取得する方法
Photoshopのboundsプロパティを使用すると、選択しているレイヤーの四隅の座標を取得できます。

レイヤーの座標を取得するコード
layObj = activeDocument.activeLayer.bounds;
x1 = layObj[0];
y1 = layObj[1];
x2 = layObj[2];
y2 = layObj[3];
alert("(" + x1 + "," + y1 + ")-(" + x2 + "," + y2 + ")");
このコードを実行すると、レイヤーの左上座標(x1, y1)と右下座標(x2, y2)がダイアログで表示されます。

選択したレイヤーのサイズのシェイプを作成するスクリプト
以下のスクリプトを使用すると、選択したレイヤーと同じサイズの新しいシェイプを自動生成できます。
STEP.1 スクリプトを配置
CreateShapeFromLayer.jsxというファイル名で保存します。
Photoshopのほかの操作方法は、関連記事にまとめています。
あわせて読みたい


Photoshopの使い方|保存・レイヤー・一括処理から探す
Photoshopでやりたい作業から記事を選べます。複数の画像に同じ編集を繰り返す場合は「アクション・一括処理」、JSXファイルを初めて使う場合は「スクリプトの導入・実…
function DrawShape() {
var doc = app.activeDocument;
var y = arguments.length;
var i = 0;
var lineArray = [];
for (i = 0; i < y; i++) {
lineArray[i] = new PathPointInfo;
lineArray[i].kind = PointKind.CORNERPOINT;
lineArray[i].anchor = arguments[i];
lineArray[i].leftDirection = lineArray[i].anchor;
lineArray[i].rightDirection = lineArray[i].anchor;
}
var lineSubPathArray = new SubPathInfo();
lineSubPathArray.closed = true;
lineSubPathArray.operation = ShapeOperation.SHAPEADD;
lineSubPathArray.entireSubPath = lineArray;
var myPathItem = doc.pathItems.add("myPath", [lineSubPathArray]);
var desc88 = new ActionDescriptor();
var ref60 = new ActionReference();
ref60.putClass(stringIDToTypeID("contentLayer"));
desc88.putReference(charIDToTypeID("null"), ref60);
var desc89 = new ActionDescriptor();
var desc90 = new ActionDescriptor();
var desc91 = new ActionDescriptor();
desc91.putDouble(charIDToTypeID("Rd "), 255.000000); // R
desc91.putDouble(charIDToTypeID("Grn "), 0.000000); // G
desc91.putDouble(charIDToTypeID("Bl "), 128.000000); // B
var id481 = charIDToTypeID("RGBC");
desc90.putObject(charIDToTypeID("Clr "), id481, desc91);
desc89.putObject(charIDToTypeID("Type"), stringIDToTypeID("solidColorLayer"), desc90);
desc88.putObject(charIDToTypeID("Usng"), stringIDToTypeID("contentLayer"), desc89);
executeAction(charIDToTypeID("Mk "), desc88, DialogModes.NO);
myPathItem.remove();
}
function GetImageSize() {
layObj = activeDocument.activeLayer.bounds;
x1 = parseInt(layObj[0]);
y1 = parseInt(layObj[1]);
x2 = parseInt(layObj[2]);
y2 = parseInt(layObj[3]);
}
GetImageSize();
DrawShape([x1, y1], [x1, y2], [x2, y2], [x2, y1]);
- 所定のスクリプトフォルダーへファイルを配置します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\- Photoshopを再起動します。
STEP.2 スクリプトを実行
- シェイプを作成したいレイヤーを選択します。
- [ファイル] → [スクリプト] → [CreateShapeFromLayer]を実行します。
- 選択したレイヤーと同じサイズのシェイプが作成されます。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
シェイプや塗りを作る方法は、ほかにも書いています。
あわせて読みたい


Photoshopスクリプト(jsx)│背景レイヤーを「塗りつぶしレイヤー」にする方法
Photoshopで新規ドキュメントを作成すると同時に、背景レイヤーを塗りつぶしレイヤーに変更するスクリプトを紹介します。 このスクリプトを実行すると、指定サイズの背…
あわせて読みたい


輝度を透明度に変換する方法|Photoshopの手順とクリスタとの違い
ここでは白背景に黒い線を描いた画像を例にします。 元レイヤーを複製してから作業し、選択範囲を解除した状態でレイヤーマスクを追加します。 マスクへ貼り付ける際は…
あわせて読みたい


Photoshop│反転したマスクの作り方|ベタ塗り+マスクを自動化するスクリプトも
Photoshopで 線の色を簡単に変更 できる 「ベタ塗り+マスク(反転)」 の活用方法を紹介します。 スクリプトを使えば、 ワンクリックでベタ塗りレイヤーと反転マスクを…
あわせて読みたい


Photoshopスクリプト(jsx)│選択したグループを反転コピーする方法
Photoshopで選択したグループを反転コピーするスクリプトを紹介します。 左右対称のデザインやLive2Dの素材作成に役立ちます。 https://youtu.be/hf9owHjfTLQ?si=QV0u-E…
まとめ
- 選択したレイヤーのサイズを取得し、同サイズのシェイプを作成可能
- boundsプロパティでレイヤーの四隅の座標を取得
- スクリプトを実行するだけでシェイプが自動生成される
同サイズのシェイプ作成を自動化することで、UIデザインやWebデザインの作業を効率化できます。
