Amazonで商品を見るセール会場へ

Photoshopスクリプト(jsx)│選択したレイヤーサイズのシェイプを作成する方法

Photoshopで選択したレイヤーのサイズを取得し、同サイズのシェイプを作成するスクリプトを紹介します。

このスクリプトを使えば、選択レイヤーと同じ大きさのシェイプをすばやく作成できます。

選択したレイヤーと同じ大きさのシェイプをすばやく作成するPhotoshopスクリプトの実行例。
Photoshopで選択したレイヤーサイズのシェイプを作成するスクリプトの実行例。
目次

選択しているレイヤーの座標を取得する方法

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

Photoshopで選択しているレイヤーの四隅の座標を示す概念。

レイヤーの座標を取得するコード

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 スクリプトを配置

  1. CreateShapeFromLayer.jsxというファイル名で保存します。

Photoshopのほかの操作方法は、関連記事にまとめています。

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]);
  1. 所定のスクリプトフォルダーへファイルを配置します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts\
  1. Photoshopを再起動します。

STEP.2 スクリプトを実行

  1. シェイプを作成したいレイヤーを選択します。
  2. [ファイル] → [スクリプト] → [CreateShapeFromLayer]を実行します。
  3. 選択したレイヤーと同じサイズのシェイプが作成されます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

シェイプや塗りを作る方法は、ほかにも書いています。

まとめ

  • 選択したレイヤーのサイズを取得し、同サイズのシェイプを作成可能
  • boundsプロパティでレイヤーの四隅の座標を取得
  • スクリプトを実行するだけでシェイプが自動生成される

同サイズのシェイプ作成を自動化することで、UIデザインやWebデザインの作業を効率化できます。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次