2 Replies Latest reply on Jan 31, 2016 3:09 AM by thomasc13828753

    SCRIPT export png small changes

    thomasc13828753

      Hi everybody !

      I found a script who works very well about replace smart objects and save my files

      but i would like to export all my files in .png i tried some ****** things but it don't work

      the script look like that :

      #target photoshop

      if (app.documents.length > 0) {

      var myDocument = app.activeDocument;

      var theName= myDocument.name.match(/(.*)\.[^\.]+$/)[1];

      var thePath = myDocument.path;

      var theLayer = myDocument.activeLayer;

      // jpg options;

      var jpgopts = new JPEGSaveOptions();

      jpgopts.embedProfile = true;

      jpgopts.formatOptions = FormatOptions.STANDARDBASELINE;

      jpgopts.matte = MatteType.NONE;

      jpgopts.quality = 8;

      // check if layer is smart object;

      if (theLayer.kind != "LayerKind.SMARTOBJECT") {alert ("selected layer is not a smart object")}

      else {

      // select files;

      if ($.os.search(/windows/i) != -1) {var theFiles = File.openDialog ("please select files", "*.psd;*.tif;*.jpg", true)}

      else {var theFiles = File.openDialog ("please select files", getFiles, true)};

      if (theFiles) {

      // work through the array;

                for (var m = 0; m < theFiles.length; m++) {

      // replace smart object;

                          theLayer = replaceContents (theFiles[m], theLayer);

                          var theNewName = theFiles[m].name.match(/(.*)\.[^\.]+$/)[1];

      //save jpg;

                          myDocument.saveAs((new File(thePath+"/"+theName+"_"+theNewName+".jpg")),jpgopts,true);

                          }

                }

      }

      };

      ////// get psds, tifs and jpgs from files //////

      function getFiles (theFile) {

           if (theFile.name.match(/\.(psd|tif)$/i) != null || theFile.constructor.name == "Folder") {

                return true

                };

           };

      ////// replace contents //////

      function replaceContents (newFile, theSO) {

      app.activeDocument.activeLayer = theSO;

      // =======================================================

      var idplacedLayerReplaceContents = stringIDToTypeID( "placedLayerReplaceContents" );

          var desc3 = new ActionDescriptor();

          var idnull = charIDToTypeID( "null" );

          desc3.putPath( idnull, new File( newFile ) );

          var idPgNm = charIDToTypeID( "PgNm" );

          desc3.putInteger( idPgNm, 1 );

      executeAction( idplacedLayerReplaceContents, desc3, DialogModes.NO );

      return app.activeDocument.activeLayer

      };

      I hope someone can help me to fix that !

      (and sorry for my bad english)