より良い解決策:
scriptUI を使用して新しいウィンドウに画像をポップし、その画像にイベント リスナーをアタッチできますが、残念ながらドキュメント自体にはできません。コールバック関数内で X 座標を配列に追加します。配列の長さが 2 より大きい場合は、ウィンドウを非表示にしてプロセス関数を実行します。このように、最初のクリックで最初の点が設定され、2 回目のクリックで 2 番目の点が設定されます。3 回目のクリックで処理機能が実行されます。本当に凝ったものにしたい場合は、失敗した場合に右クリックを使用してすべてをリセットできますが、それはあなたに任せます.
#target photoshop
function processImage(image, partWidth) {
// Your function to resize the image based on the part width
alert(partWidth); // For testing purposes
}
// Save the current unit preferences (optional)
var startRulerUnits = app.preferences.rulerUnits
var startTypeUnits = app.preferences.typeUnits
// Set units to PIXELS
app.preferences.rulerUnits = Units.PIXELS
app.preferences.typeUnits = TypeUnits.PIXELS
var doc = app.activeDocument; // or the next file in your file array if doing multiple
var clicks = [];
var width = 0;
var w = new Window("dialog", "The Image");
var img = w.add("image", undefined, File(doc.fullName));
img.addEventListener("click", function(k) {
if (clicks.length < 2) {
clicks.push(k.clientX);
}
else {
// absolute value so it doesn't matter if
// we click right or left side first
width = Math.abs(clicks[0] - clicks[1]);
w.hide;
processImage(doc, width);
}
});
w.show();
// Reset to previous unit prefs (optional)
app.preferences.rulerUnits = startRulerUnits;
app.preferences.typeUnits = startTypeUnits;
必要なのは、このPhotoshop スクリプトのようなものを使用して一連の画像をループ処理することです。フォルダー (ダイアログ ボックス) 内の画像のサイズを変更し、このコードをループに投入して、これをバッチとして実行します。
(画像が画面サイズよりも大きく、画像を縮小したり、スクロールバーを追加したりするのが非常に困難で、残念ながら scriptUI ではハッキリしている場合、問題が発生する可能性があります)
不自由な解決策:
これを行う 1 つの方法は、Rectangular Marquee Tool (正方形の選択ボックス) を使用してパーツの幅を選択することです。次に、選択範囲のディメンションにアクセスできます。選択の境界は、次の形式で配列に格納されます。[top-leftX, top-leftY, bottom-rightX, bottom-rightY]
選択の幅を取得するには、2 番目の X 値から最初の X 値を引くことができます。
スニペットの例:
#target photoshop
var bounds = app.activeDocument.selection.bounds;
var selectionWidth = bounds[3] - bounds[0];
alert(selectionWidth);
これに対する唯一の注意点は、ユーザーがスクリプトを実行する前に選択を行う必要があることです。
scriptUI イベントリスナーを使用してこれを行う別の方法があるかもしれません。問題は、ウィンドウやパレットなどの scriptUI オブジェクトに適用する必要があることです。不透明度が 0 の大きなウィンドウを作成し、そのウィンドウにクリック イベントを追加して、マウスの座標をキャプチャすることができます。正直なところ、Java や C# などを使用して Photoshop の外で行う方が簡単です。