Photoshop CS3〜CC編 フォルダ内にある複数画像を最大サイズにする

今回のスクリプトは、フォルダ内にある複数画像を最大サイズにするものです。
スキャナで複数の画像を取り込んだ際、取り込んだ画像のサイズがバラバラになります。そこで、フォルダ(サブフォルダも含む)内にある複数の画像を読み出し、最大サイズの画像にあわせてキャンバスサイズを変更します。

元は明治の教科書を取り込んだ際、少しずつ取り込んだ画像のサイズが異なるのを統一するために使ったスクリプトです。

以下のスクリプトを実行したら、最初に画像があるフォルダを選択します。最初にすべての画像を開いてサイズを確認します。その後、キャンバスサイズの調整を行い保存します。保存形式は元ファイルと同じになります。

その際、JPEG画質設定のダイアログが表示される場合があります。このため、PSD画像以外は完全に自動処理される保証はありません。


// 指定されたフォルダ内にある画像を開いて最大サイズの画像のキャンバスにする
(function(){
var imgList = getAllFiles(["*.psd", "*.tif", "*.jpg", "*.jpeg"]);
var maxWidth = 0;
var maxHeight = 0;
app.displayDialogs = DialogModes.NO; // ダイアログを出さないようにする
var saveUnit = preferences.rulerUnits; // 単位を保存
preferences.rulerUnits = Units.PIXELS; // 単位をピクセルに設定
for(var i=0; i<imgList.length; i++){
app.open(imgList[i]);
var w = parseFloat(app.activeDocument.width);
var h = parseFloat(app.activeDocument.height);
//$.writeln(w+","+h);
if (w > maxWidth){ maxWidth = w; }
if (h > maxHeight){ maxHeight = h; }
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
//$.writeln("-----------------");
//$.writeln(maxWidth+","+maxHeight);
for(var i=0; i<imgList.length; i++){
app.open(imgList[i]);
app.activeDocument.resizeCanvas(maxWidth, maxHeight, AnchorPosition.MIDDLECENTER);
activeDocument.close(SaveOptions.SAVECHANGES); // 保存する
}
preferences.rulerUnits = saveUnit; // 単位を元に戻す
})();
// File Library
function getAllFiles(fileTypes, basePath,options){
options = options || {};
if(!basePath){
basePath = Folder.selectDialog("フォルダを選択してください");
if (!basePath){ return; } // キャンセルされた場合は処理しない
}
var allList = [];
// パラメータが文字の場合
if (typeof(fileTypes) == "string"){
getFileList(new Folder(basePath), fileTypes);
return toJapanese(allList, options.japanese);
}
// パラメータが配列の場合
if (fileTypes.push){
for(var i=0; i<fileTypes.length; i++){
getFileList(new Folder(basePath), fileTypes[i]);
}
return toJapanese(allList, options.japanese);
}
function getFileList(currentFolder, fileType){
var fileList = currentFolder.getFiles(fileType);
var fileList2 = currentFolder.getFiles("*"); // Sub Folder
allList = allList.concat(fileList);
for(var i=0; i<fileList2.length; i++){
if (fileList2[i].getFiles){
if (fileList2[i].name.charAt(0) == "."){ continue; }
getFileList(fileList2[i], fileType); // フォルダがある限り繰り返し
}
}
}
// 日本語に変換(nameJ, fullNameJ)
function toJapanese(fileList, flag){
if (!flag){ return fileList; }
for(var i=0; i<fileList.length; i++){
fileList[i].nameJ = File.decode(fileList[i].name);
fileList[i].fullNameJ = File.decode(fileList[i].fullName);
}
return fileList;
}
}

なお、PSD, TIFF, JPEG形式以外も処理したい場合は、以下の行にある拡張子を追加、変更してください。

var imgList = getAllFiles(["*.psd", "*.tif", "*.jpg", "*.jpeg"]);

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