Photoshopでは、画像アセットの書き出し時にピクセル数を指定しても、意図したサイズから1pxずれることがあります。
マスクを使用する方法もありますが、シェイプの境界に合わせて手動で正確な四角形の選択範囲を作る作業には手間がかかります。
そこで、レイヤーのシェイプ範囲を四角形で正確に選択するスクリプトを紹介します。
このスクリプトを実行すれば、対象レイヤーの描画領域に沿った正確な矩形の選択範囲を自動で作成できます。


目次
標準機能では困難なシェイプ範囲の選択
Photoshopの標準機能では、シェイプの輪郭に沿ってガイドを配置することは可能ですが、外枠にぴったり合わせた四角形の選択範囲をワンタッチで作成することはできません。
今回のスクリプトを使用すると、シェイプの外枠に沿った四角形の選択範囲をすばやく作成できます。
使用方法
STEP 1: スクリプトの配置
- 下記のコードをテキストエディタ等に貼り付けて保存
Photoshopのほかの操作は、まとめからご覧いただけます。
あわせて読みたい


Photoshopの使い方|保存・レイヤー・一括処理から探す
Photoshopでやりたい作業から記事を選べます。複数の画像に同じ編集を繰り返す場合は「アクション・一括処理」、JSXファイルを初めて使う場合は「スクリプトの導入・実…
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;
}
- スクリプトをダウンロード し、以下のディレクトリに格納します。
C:\Program Files\Adobe\Adobe Photoshop CC\Presets\Scripts- Photoshopを再起動します。
STEP 2: スクリプトを実行
- Photoshopを開く
- [ファイル] → [スクリプト] → [参照] からスクリプトを選択
- 実行すると、選択中のレイヤーの範囲に合わせた四角形の選択範囲が作成されます。


スクリプトの仕組み
- レイヤー内の不透明なエリアをクリッピング
- シェイプのバウンディングボックス(境界座標)を取得し、四角形の選択範囲として作成
- 元の表示状態に戻す
この処理により、対象レイヤーの正確な矩形選択範囲が得られ、画像アセット書き出し時の1pxのズレを防ぐことができます。
この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。
シェイプや塗りを作る方法は、ほかにも書いています。
あわせて読みたい


Photoshop│図形を数値入力で正確に移動させる方法|自由変形とjsxスクリプト
UIデザインやレイアウト作業では、パーツのサイズや余白に厳密なルールを設けることが多く、正確な位置調整が求められます。 Photoshopでは数値入力による位置調整が可…
あわせて読みたい


Photoshop│便利な小技集
Photoshopを使っていると、作業を効率化できる便利な機能や操作方法が多くあります。 本記事では、知っておくと作業効率が上がる便利な小技を紹介します。 自動選択の切…
あわせて読みたい


Photoshopスクリプト(jsx)│シェイプの角を丸くする方法
Photoshopでは対応するライブシェイプの角丸を標準機能で調整できます。 まずプロパティやシェイプのオプションを確認してください。 この記事は、標準の調整では扱えな…
あわせて読みたい


Photoshopスクリプト(jsx)│選択したレイヤーサイズのシェイプを作成する方法
Photoshopで選択したレイヤーのサイズを取得し、同サイズのシェイプを作成するスクリプトを紹介します。 このスクリプトを使えば、選択レイヤーと同じ大きさのシェイプ…
まとめ
選択範囲をシェイプの範囲に合わせて四角形で正確に作成
画像アセット書き出し時の1pxズレを防止
スクリプトを実行するだけで自動処理が可能
画像アセット書き出し時のサイズズレに悩まされている場合は、ぜひ活用してみてください。
