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

Photoshopスクリプト(jsx)│選択範囲を四角で選択する方法

Photoshopでは、画像アセットの書き出し時にピクセル数を指定しても、意図したサイズから1pxずれることがあります。

マスクを使用する方法もありますが、シェイプの境界に合わせて手動で正確な四角形の選択範囲を作る作業には手間がかかります。

そこで、レイヤーのシェイプ範囲を四角形で正確に選択するスクリプトを紹介します。

このスクリプトを実行すれば、対象レイヤーの描画領域に沿った正確な矩形の選択範囲を自動で作成できます。

スクリプトを実行して対象レイヤーの描画領域に沿った正確な矩形の選択範囲を自動作成した様子。
Photoshopの標準機能では外枠にぴったり合わせた四角形の選択範囲を作成することが困難なシェイプの例。
目次

標準機能では困難なシェイプ範囲の選択

Photoshopの標準機能では、シェイプの輪郭に沿ってガイドを配置することは可能ですが、外枠にぴったり合わせた四角形の選択範囲をワンタッチで作成することはできません。

今回のスクリプトを使用すると、シェイプの外枠に沿った四角形の選択範囲をすばやく作成できます。

使用方法

STEP 1: スクリプトの配置

  1. 下記のコードをテキストエディタ等に貼り付けて保存

Photoshopのほかの操作は、まとめからご覧いただけます。

clippingArea.jsx

function clippingArea() {
    var strtRulerUnits = preferences.rulerUnits;
    if(strtRulerUnits != Units.PIXELS){ preferences.rulerUnits = Units.PIXELS; }
    
    var srcDoc = activeDocument;
    
    function visibleActiveOnly(docRef){
        var visible = new Array();
        for(var i = 0; i < docRef.layers.length; i++){
            visible[i] = docRef.layers[i].visible;
            if(docRef.layers[i].visible){ docRef.layers[i].visible = false; }
        }
        docRef.activeLayer.visible = true;
        return visible;
    }
    
    function visibleOriginal(docRef, visible){
        for(var i = 0; i < docRef.layers.length; i++){
            docRef.layers[i].visible = visible[i];
        }
        return true;
    }
    
    function ClippingArea(docRef){
        var x_size = docRef.width;
        var y_size = docRef.height;
    
        var before = docRef.activeHistoryState;
    
        docRef.trim(TrimType.TRANSPARENT, true, true, false, false);
    
        var x_offset = x_size - docRef.width;
        var y_offset = y_size - docRef.height;
    
        docRef.trim(TrimType.TRANSPARENT, true, true, true, true);
    
        var x_trim_size = docRef.width;
        var y_trim_size = docRef.height;
    
        docRef.activeHistoryState = before;
    
        this.left = x_offset;
        this.right = x_offset + x_trim_size;
        this.top = y_offset;
        this.bottom = y_offset + y_trim_size;
    }
    
    var v_array = visibleActiveOnly(srcDoc);
    var xy = new ClippingArea(srcDoc);
    visibleOriginal(srcDoc, v_array);
    
    srcDoc.selection.select(Array(
        Array(xy.left, xy.top),
        Array(xy.right, xy.top),
        Array(xy.right, xy.bottom),
        Array(xy.left, xy.bottom)
    ), SelectionType.REPLACE, 0, false);
    
    if(strtRulerUnits != Units.PIXELS){ preferences.rulerUnits = strtRulerUnits; }
    
    srcDoc = null;
    xy = null;
    v_array = null;
}
  1. スクリプトをダウンロード し、以下のディレクトリに格納します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts
  1. Photoshopを再起動します。

STEP 2: スクリプトを実行

  1. Photoshopを開く
  2. [ファイル] → [スクリプト] → [参照] からスクリプトを選択
  3. 実行すると、選択中のレイヤーの範囲に合わせた四角形の選択範囲が作成されます。
選択中のレイヤーの範囲に合わせて作成された四角形の選択範囲。
Photoshopスクリプトで選択範囲を四角で選択する処理の実行結果。

スクリプトの仕組み

  1. レイヤー内の不透明なエリアをクリッピング
  2. シェイプのバウンディングボックス(境界座標)を取得し、四角形の選択範囲として作成
  3. 元の表示状態に戻す

この処理により、対象レイヤーの正確な矩形選択範囲が得られ、画像アセット書き出し時の1pxのズレを防ぐことができます。

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

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

まとめ

選択範囲をシェイプの範囲に合わせて四角形で正確に作成

画像アセット書き出し時の1pxズレを防止

スクリプトを実行するだけで自動処理が可能

画像アセット書き出し時のサイズズレに悩まされている場合は、ぜひ活用してみてください。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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