選択されたレイヤーに枠を付ける/マットを表示する (Photoshop CS/CS2/CS3)

Photoshop CS/CS2で選択されたレイヤーに枠を付けるスクリプトです。Photoshop CS2では複数のレイヤーを選択できますが、選択されたレイヤーのうち1つだけが対象になります。


saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
offsetX1 = -0; // 左のオフセット(単位はピクセル)
offsetY1 = 0; // 上のオフセット(単位はピクセル)
offsetX2 = 0; // 右のオフセット(単位はピクセル)
offsetY2 = 0; // 下のオフセット(単位はピクセル)
RGBColor = new SolidColor();
RGBColor.red = 255;
RGBColor.green = 0;
RGBColor.blue = 0;
layObj = activeDocument.activeLayer;
x1 = parseInt(layObj.bounds[0]);
y1 = parseInt(layObj.bounds[1]);
x2 = parseInt(layObj.bounds[2]);
y2 = parseInt(layObj.bounds[3]);
newLayerObj = activeDocument.artLayers.add();
// 上
selReg = [[x1+offsetX1,y1+offsetY1],[x2+offsetX2,y1+offsetY1],[x2+offsetX2,y1+offsetY1+1],[x1+offsetX1,y1+offsetY1+1]];
activeDocument.selection.select(selReg);
activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);
// 下
selReg = [[x1+offsetX1,y2+offsetY2],[x2+offsetX2,y2+offsetY2],[x2+offsetX2,y2+offsetY2-1],[x1+offsetX1,y2+offsetY2-1]];
activeDocument.selection.select(selReg);
activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);
// 左
selReg = [[x1+offsetX1,y1+offsetY1],[x1+offsetX1+1,y1+offsetY1],[x1+offsetX1+1,y2+offsetY2],[x1+offsetX1,y2+offsetY2]];
activeDocument.selection.select(selReg);
activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);
// 右
selReg = [[x2+offsetX2,y1+offsetY1],[x2+offsetX2-1,y1+offsetY1],[x2+offsetX2-1,y2+offsetY2],[x2+offsetX2,y2+offsetY2]];
activeDocument.selection.select(selReg);
activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);
// 選択解除
activeDocument.selection.deselect();
newLayerObj.move(layObj, ElementPlacement.PLACEAFTER);

枠の色は以下の3行で指定します。
RGBColor.red = 255;
RGBColor.green = 0;
RGBColor.blue = 0;

値は0〜255で赤緑青の輝度を示しています。枠のずれ(オフセット)を指定する場合には以下の4行の値を変更します。
offsetX1 = -0; // 左のオフセット(単位はピクセル)
offsetY1 = 0; // 上のオフセット(単位はピクセル)
offsetX2 = 0; // 右のオフセット(単位はピクセル)
offsetY2 = 0; // 下のオフセット(単位はピクセル)

枠線ではなくTVの字幕の下に表示されるマットのようにしたい場合には以下のスクリプトを使用します。
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
offsetX1 = -0; // 左のオフセット(単位はピクセル)
offsetY1 = 0; // 上のオフセット(単位はピクセル)
offsetX2 = 0; // 右のオフセット(単位はピクセル)
offsetY2 = 0; // 下のオフセット(単位はピクセル)
RGBColor = new SolidColor();
RGBColor.red = 255;
RGBColor.green = 0;
RGBColor.blue = 0;
layObj = activeDocument.activeLayer;
x1 = parseInt(layObj.bounds[0]);
y1 = parseInt(layObj.bounds[1]);
x2 = parseInt(layObj.bounds[2]);
y2 = parseInt(layObj.bounds[3]);
newLayerObj = activeDocument.artLayers.add();
selReg = [[x1+offsetX1,y1+offsetY1],[x2+offsetX2,y1+offsetY1],[x2+offsetX2,y2+offsetY2],[x1+offsetX1,y2+offsetY2]];
activeDocument.selection.select(selReg);
activeDocument.selection.fill(RGBColor,ColorBlendMode.NORMAL, 100, false);
activeDocument.selection.deselect();
newLayerObj.move(layObj, ElementPlacement.PLACEAFTER);

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