Export a group of images inside folders and subfolders, with "Export for Web" JPG quality 50..
#target photoshop
var originalUnits = app.preferences.rulerUnits;
var originalDialogs = app.displayDialogs;
var originalSave = app.preferences.appendExtension;
var pastaOriginal = Folder.selectDialog ("Selecione a pasta de origem das imagens");
var pastaDestino = Folder.selectDialog("Selecione a paste de destino das imagens");
var arquivosProcessados = arquivosAbertos = pastasProcessadas = arquivosComErro = 0;
var pastas = Array();
pastas.push(pastaDestino);
app.preferences.rulerUnits = Units.PIXELS;
app.displayDialogs = DialogModes.NO;
app.preferences.appendExtension = SaveBehavior.ALWAYSSAVE;
if(pastaOriginal != null) processarPasta(pastaOriginal);
function processarPasta(folder) {
var arquivos = folder.getFiles();
var estruturaPastas = '';
pastas.push(folder.name);
estruturaPastas = pastas.join('/');
//$.writeln (pastas);
var pastaNova = new Folder(estruturaPastas);
if(!pastaNova.exists) pastaNova.create();
for(var i = 0; i < arquivos.length; i++) {
var file = arquivos[i];
//$.writeln (file.fullName);
//$.writeln (file.name);
arquivosAbertos++;
if(file instanceof File && (file.name.match(/\.jpg$/i) || file.name.match(/\.jpeg$/i) || file.name.match(/\.bmp$/i) || file.name.match(/\.gif$/i) || file.name.match(/\.tif$/i) ) ){
//if(file instanceof File ){
try{
open(file);
var doc = app.activeDocument;
doc.changeMode (ChangeMode.RGB);
doc.flatten();
//doc.resizeImage(150);
app.preferences.rulerUnits = Units.PIXELS;
//var pasta = file.parent;
//var caminho = pastaDestino + '/' + pasta.name + '/' + file.name;
var caminho = estruturaPastas + '/' + file.name;// + '.jpg';
var arquivo = new File(caminho);
saveForWeb(arquivo, 50);
doc.close(SaveOptions.DONOTSAVECHANGES);
arquivosProcessados++;
} catch (erro) {
$.writeln('Erro! ' + erro + ' - ' + file.name);
arquivosComErro++;
}
/*
$.writeln(file.displayName);
$.writeln('Original: ' + file.fullName);
$.writeln(File.decode(caminho));
*/
}else if(file instanceof Folder){
processarPasta(file);
} else {
$.writeln (file.name);
}
}
pastas.pop();
pastasProcessadas++;
}
app.preferences.rulerUnits = originalUnits;
app.displayDialogs = originalDialogs;
app.preferences.appendExtension = originalSave;
$.writeln ('Pastas processadas: ' + pastasProcessadas);
$.writeln ('Arquivos processados: ' + arquivosProcessados);
$.writeln ('Total de arquivos abertos: ' + arquivosAbertos);
$.writeln ('Arquivos com erro: ' + arquivosComErro);
//~ $.writeln ('Pastas processadas: ' + pastasProcessadas);
//~ $.writeln ('Arquivos processados: ' + arquivosProcessados);
//~ $.writeln ('Total de arquivos abertos: ' + arquivosAbertos);
//~ $.writeln ('Arquivos com erro: ' + arquivosComErro);
function saveForWeb(arquivo, qualidade){
var sfwOpcoes = new ExportOptionsSaveForWeb();
sfwOpcoes.format = SaveDocumentType.JPEG;
sfwOpcoes.includeProfile = false;
sfwOpcoes.interlaced = 0;
sfwOpcoes.optimized = true;
sfwOpcoes.quality = qualidade;
app.activeDocument.exportDocument (arquivo, ExportType.SAVEFORWEB, sfwOpcoes);
}