左上と右下を基準にして範囲を選択する (Photoshop CS/CS2/CS3)

Photoshopでは数多くの選択範囲を指定する方法が用意されています。選択範囲の幅などを指定するのは簡単ですが、左上と右下を基準にして範囲を選択することはできません。つまり左から10ピクセル、上から20ピクセルの位置から、右から10ピクセル、下から15ピクセルの範囲を選択する、という機能がありません。これはスクリプトを使えば可能になります。
以下のスクリプトは左から10ピクセル、上から15ピクセル、右から15ピクセル、下から10ピクセルの範囲を選択するものです。

saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
w = activeDocument.width.value;
h = activeDocument.height.value;
x1 = 10;
y1 = 15;
x2 = w - 15;
y2 = h - 10;
selReg = [[x1,y1],[x2,y1],[x2,y2],[x1,y2]];
activeDocument.selection.select(selReg);
preferences.rulerUnits = saveUnit;

選択範囲を変更したい場合には以下の行の数値部分を変更します。

x1 = 10;
y1 = 15;
x2 = w - 15;
y2 = h - 10;

選択範囲の位置を任意のものにするには以下のスクリプトを使います。これは位置を入力するようになっています。

saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
w = activeDocument.width.value;
h = activeDocument.height.value;
x1 = parseInt(prompt("左からの位置", 10));
y1 = parseInt(prompt("上からの位置", 15));
x2 = w - parseInt(prompt("右からの位置", 15));
y2 = h - parseInt(prompt("下からの位置", 10));
selReg = [[x1,y1],[x2,y1],[x2,y2],[x1,y2]];
activeDocument.selection.select(selReg);
preferences.rulerUnits = saveUnit;

選択範囲を塗りつぶしたいのであれば以下のスクリプトになります。上記のスクプトで範囲を選択してしまえば通常のメニューからの選択やアクションで可能ですがおまけということで。

RGBColor = new SolidColor();
RGBColor.red = 255;
RGBColor.green = 0;
RGBColor.blue = 0;
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
w = activeDocument.width.value;
h = activeDocument.height.value;
x1 = 10;
y1 = 15;
x2 = w - 15;
y2 = h - 10;
selReg = [[x1,y1],[x2,y1],[x2,y2],[x1,y2]];
activeDocument.selection.select(selReg);
preferences.rulerUnits = saveUnit;
activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);

塗りつぶしではなく枠線を描く場合には以下のスクリプトになります。

RGBColor = new SolidColor();
RGBColor.red = 255;
RGBColor.green = 0;
RGBColor.blue = 0;
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
w = activeDocument.width.value;
h = activeDocument.height.value;
x1 = 10;
y1 = 15;
x2 = w - 15;
y2 = h - 10;
selReg = [[x1,y1],[x2,y1],[x2,y2],[x1,y2]];
activeDocument.selection.select(selReg);
preferences.rulerUnits = saveUnit;
activeDocument.selection.stroke(RGBColor,10,StrokeLocation.CENTER,ColorBlendMode.NORMAL, 100, false);

[サンプルをダウンロード]