クリエイター手抜きプロジェクト[367]Photoshop CS3〜CC編 フォルダ内にある複数画像を最大サイズにする/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,100文字)


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

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

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

その際、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"]);


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

食品業界において「誤表示」という単語は新たな金字塔をうちたてたはず。偽装表示という言葉よりも、うまいこと回避できる素晴らしいキーワード......。消費税があがる前に、どんどん買いだめ。ホームセンターに行ったら同じことを考えている人が多く、A4用紙など特定のものが、どんどん売れている状態......。うちもインクカートリッジとかトナー買いだめ中......。

・Adobe JavaScriptリファレンス
< http://www.amazon.co.jp/dp/4844395955 >

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/ >

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。