今回はPhotoshopで選択範囲を四辺別々に拡張するスクリプトです。標準では選択範囲の拡張は4px拡張指定すると全体が広がってしまいます。左側だけ10px拡張したい場合には困ってしまいます。ということで、四辺別々に選択範囲を拡張、変更できるスクリプトを作成しました。
以下のスクリプトはGUI付きでテキストボックスに数値を入力すると、その分だけ選択範囲が拡張されます。なお、Photoshopの都合上(?)ボタンを連打すると低速になったりエラーにします。エラーがでないように処理していますが、エラー復旧と画面更新処理のため連続してボタンをクリックすると処理に非常に時間がかかることがあります。
// 選択範囲を拡張する
(function selection_range_extend(){
try{
if (activeDocument.selection.solid == false){
alert("選択範囲が四角形でないと使えません");
return;
}
}catch(e){
alert("範囲を選択してください");
return;
}
var rect = activeDocument.selection.bounds;
var x1 = parseInt(rect[0]);
var y1 = parseInt(rect[1]);
var x2 = parseInt(rect[2]);
var y2 = parseInt(rect[3]);
$.writeln("src : "+x1+","+y1+", "+x2+","+y2);
// GUI部分
var winObj = new Window("dialog", "選択範囲を拡張する", [0,0,320,200]);
var cropSize1 = winObj.add("statictext", [20, 10, 300, 25], "拡張する値を入れてください");
winObj.add("statictext", [40, 50, 60, 70], "左");
winObj.add("statictext", [140, 50, 160, 70], "上");
winObj.add("statictext", [40, 80, 60, 100], "右");
winObj.add("statictext", [140, 80, 160, 100], "下");
var x1e = winObj.add("edittext", [60, 50, 100, 70], "0");
var y1e = winObj.add("edittext", [160, 50, 200, 70], "0");
var x2e = winObj.add("edittext", [60, 80, 100, 100], "0");
var y2e = winObj.add("edittext", [160, 80, 200, 100], "0");
var btnExtend = winObj.add("button", [20, 130, 300, 155], "拡張する");
var btnEnd = winObj.add("button", [20, 160, 300, 185], "終了する");
// ボタンにイベントを割り当てる
btnExtend.onClick = function(){
// 新しい選択範囲を計算する
x1 = x1 - parseInt(x1e.text);
y1 = y1 - parseInt(y1e.text);
x2 = x2 + parseInt(x2e.text);
y2 = y2 + parseInt(y2e.text);
// 現在の選択範囲をクリアする
try{
activeDocument.selection.deselect();
app.refresh();
}catch(e){}
// 新たな選択範囲を設定する
try{
activeDocument.selection.select([[x1,y1],[x2,y1],[x2,y2],[x1,y2]]);
app.refresh();
}catch(e){}
}
// ウィンドウを閉じる
btnEnd.onClick = function(){
winObj.close();
}
winObj.center();
winObj.show();
})();
[
サンプルをダウンロード]