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

Photoshop│図形を数値入力で正確に移動させる方法|自由変形とjsxスクリプト

UIデザインやレイアウト作業では、パーツのサイズや余白に厳密なルールを設けることが多く、正確な位置調整が求められます。

Photoshopでは数値入力による位置調整が可能です。

本記事ではその具体的な方法を2つ紹介します。

目次

自由変形時の数値入力で図形を移動させる方法

標準機能だけで手軽に行える方法です。

以下の手順で、座標を直接指定して移動します。

  1. 移動させたいレイヤーを選択する
  2. Ctrl + T(Macの場合はCmd + T)で自由変形モードにする
  3. 画面上部のオプションバーにある座標入力欄にX座標とY座標を入力する
  4. Enterキーで確定する
自由変形モード時に画面上部のオプションバーで座標入力欄にX座標とY座標を指定する操作画面。

自由変形のオプションバーでは、相対位置のボタンに切り替えることで、現在位置からの移動量も入力できます。

右へ10px移動する場合は、相対位置を選び、単位をpxとしてXに10、Yに0を指定します。

絶対座標の欄へ10を入れる操作とは異なるため、設定を確認してください。

スクリプトを使って数値入力で図形を移動させる方法

同じ操作を繰り返す場合は、次のスクリプトで移動量をpx指定する方法もあります。

標準機能だけで足りる場合は導入不要です。

手順

  1. 以下のコードをUTF-8のテキストファイルpixelMove.jsxとして保存する
  2. 「ファイル」→「スクリプト」→「参照」から保存したファイルを選ぶ
  3. ダイアログが表示されたら、移動距離を入力する
  4. OKをクリックすると、指定したピクセル数だけ対象が移動する
スクリプト実行時に表示されるダイアログでX方向とY方向の移動距離を入力する設定画面。

pixelMove.jsx

このスクリプトを実行すると入力ダイアログが表示され、X方向とY方向それぞれの移動距離をピクセル単位で入力できます。

OKをクリックすると、入力した数値の分だけ選択中のレイヤーが移動します。

対象はアクティブなレイヤーまたはレイヤーグループ1つです。

複数選択したレイヤーを個別に処理するコードではありません。

(function () {
    if (!app.documents.length) {
        alert("ドキュメントを開き、移動するレイヤーを選択してください。");
        return;
    }
    var layer = app.activeDocument.activeLayer;
    var dialog = new Window("dialog", "レイヤーの移動距離(px)");
    dialog.orientation = "column";
    dialog.alignChildren = "left";
    function field(label) {
        var row = dialog.add("group");
        row.add("statictext", undefined, label);
        return row.add("edittext", [0, 0, 100, 25], "0");
    }
    var x = field("横:右が+、左が-");
    var y = field("縦:下が+、上が-");
    var buttons = dialog.add("group");
    var ok = buttons.add("button", undefined, "移動", {name: "ok"});
    buttons.add("button", undefined, "キャンセル", {name: "cancel"});
    ok.onClick = function () {
        function number(text) {
            text = String(text).replace(/^\s+|\s+$/g, "");
            if (!/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/.test(text)) return null;
            var value = Number(text);
            return isFinite(value) ? value : null;
        }
        var dx = number(x.text);
        var dy = number(y.text);
        if (dx === null || dy === null) {
            alert("単位を付けず、有限の数値を両方の欄に入力してください。");
            return;
        }
        try {
            layer.translate(new UnitValue(dx, "px"), new UnitValue(dy, "px"));
            dialog.close(1);
        } catch (error) {
            alert("移動できませんでした。レイヤーのロックや選択状態を確認してください。\n" + error.message);
        }
    };
    dialog.center();
    x.active = true;
    dialog.show();
}());

Photoshopの他の操作方法については、以下の関連記事も参照してください。

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

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

まとめ

  • 絶対座標での移動:Ctrl + Tで自由変形モードにして座標を入力
  • 相対的な移動:自由変形の相対位置、またはスクリプトで移動量を指定

UIデザインやガイドラインに沿った制作では正確な位置指定が求められます。

目的に応じて扱いやすい方法を使い分けてください。

掲載画像は旧版の画面です。

下の修正版は「中心から」のチェックを廃止し、入力した移動量をそのまま使用します。

右・下は正、左・上は負の値です。

修正版は数値入力、キャンセル、ドキュメント未選択、移動エラーの処理を模擬環境で確認しました。

現行Photoshop上での実行は未検証なので、複製したPSDで結果を確認してから作業用ファイルに使ってください。

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

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

Photoshopのおすすめ書籍

動作要件とPCの確認項目

周辺機器の優先度

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