Adobe Photoshop CS/CS2/CS3/CS4編 フォルダ内の画像を同サイズで配置する

フォルダ内にある大量の写真のサムネールを1枚の画像で見たい、印刷したいことがあります。SDカードなどに入っている画像一覧を一枚のJPEG画像にしておけば便利なこともあります。
という事で今回のスクリプトは指定したサイズで現在表示されているドキュメントに画像を配置するものです。


function imageImport(w, h){
var srcFolder = Folder.selectDialog("配置する画像があるフォルダを選択してください");
if (!srcFolder) return;
var sUnit = preferences.rulerUnits; // 単位をpx(ピクセル)にする
preferences.rulerUnits = Units.PIXELS; // 単位をpx(ピクセル)にする
var docW = activeDocument.width.value; // 横幅
var docH = activeDocument.height.value; // 縦幅
var startX = 0; // 配置開始横位置
var posX = startX; // 配置横位置(単位はpx)
var posY = 0; // 配置縦位置(単位はpx)
var fileList = srcFolder.getFiles("*.jpg"); // JPEGファイルのみ対象
for(var i=0; i<fileList.length; i++){
try{
app.open(fileList[i]); // 画像ファイルを開く
activeDocument.flatten(); // 画像を統合する
activeDocument.resizeImage(w, h); // 指定したサイズにする
activeDocument.selection.selectAll(); // 全て選択する
activeDocument.activeLayer.copy(); // コピー
activeDocument.close(SaveOptions.DONOTSAVECHANGES); // 保存せずに閉じる
app.activeDocument.paste();
moveActiveLayer(posX, posY);
posX = posX + w;
activeDocument.flatten(); // 画像を統合する
if (posX > docW){
posX = startX;
posY = posY + h;
if (posY > docH) return; // キャンバス外になったら以後は配置しない
}
}catch(e){}
}
preferences.rulerUnits = sUnit;
}
function moveActiveLayer(offsetX, offsetY){
var docObj = activeDocument;
var layObj = docObj.activeLayer; // アクティブレイヤー
var w = docObj.width.value;
var h = docObj.height.value;
var x1 = parseFloat(layObj.bounds[0]);
var y1 = parseFloat(layObj.bounds[1]);
layObj.translate(offsetX-x1, offsetY-y1);
}
var imgW = parseInt(prompt("配置画像の横幅を入れてください(px単位)", 50));
var imgH = parseInt(prompt("配置画像の縦幅を入れてください(px単位)", 50));
var doc = activeDocument; // 配置するドキュメント情報を保存
imageImport(imgW, imgH);
配置する画像の横幅や縦幅が決まっている場合は以下の2行を変更します。例えば横幅64ピクセル、縦幅48ピクセルの場合は以下のように変更します。

var imgW = parseInt(prompt("配置画像の横幅を入れてください(px単位)", 50));
var imgH = parseInt(prompt("配置画像の縦幅を入れてください(px単位)", 50));
  ↓
var imgW = 64;
var imgH = 48;


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