Photoshop 画像加工自動化 jsx

Photoshopの画像加工を自動化

いつも行ってる作業内容

元画像データ40枚(サイズ2種類)

アクションを使用して、元画像からの加工が6パターン

元画像→加工からの再加工が2パターン

ファイル名は元画像のままで、フォルダを変えて保存

アクションを使用してもパターンが多いので微妙に時間が取られるので、

1処理ですべてを完結させてみました。

var IN_FOl = Folder.selectDialog("画像フォルダを選択してください");
var OUT_FOL = Folder.selectDialog("出力先のフォルダを選択してください");
var images = IN_FOl .getFiles("*.jpg");

// 保存初期設定
var webOpt = new ExportOptionsSaveForWeb();
webOpt.format = SaveDocumentType.JPEG; //画像の形式
webOpt.interlaced = true; // インターレースにするか(プログレッシブJPGにするか)
webOpt.optimized= true; // 最適化
webOpt.quality = 70; // 画質(0~100)

// 一括処理設定
var pat = new Array("サイズA", "サイズB", "サイズC", "サイズD", "サイズE", "サイズF", "サイズG", "サイズH"); // 保存パス
var act = new Array("アクションA", "アクションB", "アクションC", "アクションD", "アクションE", "アクションF", "アクションG", "アクションH"); // アクション名

// ループ処理
for (var a=0; a<act.length; a++) {
if (a == 1) {
var OUT_FOL2 =new Folder(OUT_FOL + "/サイズA/");
images = OUT_FOL2.getFiles("*.jpg");
}
if (a == 6) {
var OUT_FOL2 =new Folder(OUT_FOL + "/サイズB/");
images = OUT_FOL2.getFiles("*.jpg");
}
for (var i=0; i<images.length; i++) {
var FN = images[i].name;
var OpenImage = app.open(images[i]);

// 保存フォルダ作成
var SavePath = OUT_FOL + '/' + pat[a];
if (!SavePath.exists) {
Folder(SavePath).create();
}

// アクション
var idPly = charIDToTypeID("Ply ");
var desc = new ActionDescriptor();
var idnull = charIDToTypeID("null");
var ref1 = new ActionReference();
var idActn = charIDToTypeID("Actn");
// サイズ違い用の別アクション処理
if (FN.match(/ファイル名一部/) && a<2) {
ref1.putName(idActn, act[a]+"_サイズ違い"); // サイズ違い専用アクション名
} else {
ref1.putName(idActn, act[a]);
}
var idASet = charIDToTypeID("ASet");
ref1.putName(idASet, "画像処理");
desc.putReference(idnull, ref1);
executeAction(idPly, desc, DialogModes.NO);

// 保存パス
var SaveImg = SavePath + "/" + FN;

// 書出し&破棄
var imgfile = new File(SaveImg);
activeDocument.exportDocument(imgfile, ExportType.SAVEFORWEB, webOpt);
activeDocument.close(SaveOptions.DONOTSAVECHANGES);
}
}
alert("処理を終了しました。");

viva