PSDファイルにEPSファイルを配置する

今回はEPSファイルをPSDファイルに配置するスクリプトです。Illustratorなどで作成したロゴデータをPSDファイル上の特定の位置に表示させる場合に便利です。今回の処理はスクリプトでなくアクションでも、ドキュメントサイズが同じ場合は同様の処理が可能です。
使い方ですが、あらかじめ配置するEPSデータを用意しておきます。次に以下のスクリプトで

offsetX = 40; // 左からの位置
offsetY = 20; // 上からの位置

の値を指定し表示位置を設定します。単位はピクセルにしていますが、最初の行のUnits.PIXELSをUnits.MMにすればミリメートル単位での指定もできます。
PSDファイルは保存され内容が書き換えられてしまうので、安全のため複製を作っておきましょう。
また、MacOS X版のPhotoshop CSではフォルダ名またはファイル名に日本語が含まれると正しく処理されない可能性があります。(Photoshop CS2では問題ありません)

preferences.rulerUnits = Units.PIXELS;
offsetX = 40; // 左からの位置
offsetY = 20; // 上からの位置
epsOpt = new EPSOpenOptions();
epsOpt.antiAlias = true;
epsOpt.constrainProportions = false;
epsOpt.width = 256;
epsOpt.height = 192;
epsOpt.mode = OpenDocumentMode.RGB;
epsOpt.resolution = 72;

epsName = File.openDialog("EPSファイルを選択してください");
if (epsName) {
open(new File(epsName), epsOpt);
activeDocument.selection.selectAll();
activeDocument.selection.copy(true);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
psdFolderObj = Folder.selectDialog("PSDファイルがあるフォルダを選択してください");
if (psdFolderObj) {
psdFileList = psdFolderObj.getFiles("*.psd");
for (i=0; i<psdFileList.length; i++) {
open(new File(psdFileList[i]));
activeDocument.paste();
layObj = activeDocument.activeLayer;
x = parseFloat(layObj.bounds[0]);
y = parseFloat(layObj.bounds[1]);
layObj.translate(offsetX-x, offsetY-y);
activeDocument.close(SaveOptions.SAVECHANGES);
}
}
}

上記のサンプルは左上からの位置を基準にしていますが、ロゴなどを右下を基準にして配置したい場合もあります。その場合は以下のスクリプトを利用してみてください。

preferences.rulerUnits = Units.PIXELS;
offsetX = 40; // 左からの位置
offsetY = 20; // 上からの位置
epsOpt = new EPSOpenOptions();
epsOpt.antiAlias = true;
epsOpt.constrainProportions = false;
epsOpt.width = 256;
epsOpt.height = 192;
epsOpt.mode = OpenDocumentMode.RGB;
epsOpt.resolution = 72;

epsName = File.openDialog("EPSファイルを選択してください");
if (epsName) {
open(new File(epsName), epsOpt);
activeDocument.selection.selectAll();
activeDocument.selection.copy(true);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
psdFolderObj = Folder.selectDialog("PSDファイルがあるフォルダを選択してください");
if (psdFolderObj) {
psdFileList = psdFolderObj.getFiles("*.psd");
for (i=0; i<psdFileList.length; i++) {
open(new File(psdFileList[i]));
w = activeDocument.width.value; // ドキュメントの横幅
h = activeDocument.height.value; // ドキュメントの縦幅
activeDocument.paste();
layObj = activeDocument.activeLayer;
x = parseFloat(layObj.bounds[2]);
y = parseFloat(layObj.bounds[3]);
layObj.translate(w-offsetX-x, h-offsetY-y);
activeDocument.close(SaveOptions.SAVECHANGES);
}
}
}



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