Skip to content

Instantly share code, notes, and snippets.

@bouze
Last active December 11, 2015 08:38
Show Gist options
  • Save bouze/4574058 to your computer and use it in GitHub Desktop.
Save bouze/4574058 to your computer and use it in GitHub Desktop.
サブフォルダを含む、フォルダ内のjpgの画質を一括で変換するPhotoshop用のjsx。 基本はダイアログで指定した画質に変換するが、親のフォルダ名が「quality-{数字}」という名前だったら以降の品質を{数字}に設定する。 ※上書き保存されます
preferences.rulerUnits = Units.PIXELS;
var JPG_QUALITY = 100;
var files;
var dst;
var defaultQuality = checkQualityValue(prompt("デフォルト画質(0~100)", 70));
JPG_QUALITY = defaultQuality;
var folderName = Folder.selectDialog("フォルダを選択してください");
if(folderName != null)
{
openFolder(folderName);
}
function openFolder(path)
{
var folder = new Folder(path);
var files = folder.getFiles();
var targetList = [];
//もしフォルダ名がquality-{数字}という名前だったら以後の品質を{数字}に設定する
var result = folder.name.match(/quality-(\d+)/);
if (result)
{
JPG_QUALITY = checkQualityValue(result[1]);
}
else
{
//JPG_QUALITY = defaultQuality;
}
for (var i=0; i < files.length; i++)
{
//Folder
if (files[i].constructor.name === 'Folder')
{
openFolder(files[i]);
}
//File
else
{
if(files[i].fsName.indexOf(".jpg") != -1 || files[i].fsName.indexOf(".jpeg") != -1)
{
targetList.push(files[i]);
}
}
}
dirProcess(targetList, folder);
}
function dirProcess(files, folder)
{
$.writeln("\n---------------\nFolder:", folder);
for (var i = 0; i < files.length; i++)
{
if(files[i])
{
var file = open(files[i]);
saveJPEG(folder + "/" + file.name);
close(file);
}
}
}
function checkQualityValue(num)
{
num = (num == null || num == undefined || num == NaN)? 70 : num;
num = (num >= 100)? 100 : num;
num = (num < 0)? 0 : num;
return num;
}
function saveJPEG(name)
{
var exp = new ExportOptionsSaveForWeb();
exp.format = SaveDocumentType.JPEG;
exp.interlaced = false;
exp.optimized= false;
exp.quality = JPG_QUALITY;
fileObj = new File(name);
$.writeln("品質:" + JPG_QUALITY + ", " + fileObj);
activeDocument.exportDocument(fileObj, ExportType.SAVEFORWEB, exp);
}
function close(dst)
{
dst.close(SaveOptions.DONOTSAVECHANGES);
dst = null;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment