afonsoalban
6/16/2016 - 6:24 PM

Export a group of images inside folders and subfolders, with "Export for Web" JPG quality 50..

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);
}