保存目标文件夹Photoshop Javascript

时间:2017-03-07 14:01:22

标签: javascript photoshop photoshop-script

我目前正在尝试添加此Photoshop脚本,(该脚本目前从文件夹中抓取多个图像文件并替换智能对象的内容并保存个别jpgs):



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

var theFolder = Folder.selectDialog ("select folder");
if (theFolder) {
var theFiles = theFolder.getFiles(/\.(jpg|tif|eps|psd|png)$/i)
} 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|png)$/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
};
&#13;
&#13;
&#13;

我要做的是采用一种方式打开对话框,这样我就可以为保存的文件选择目标文件夹,目前它将文件保存在与打开的psd相同的文件夹中。 / p>

希望这是有道理的!

提前致谢,

里克多维

1 个答案:

答案 0 :(得分:2)

Stack Overflow 脚本编写服务。但是你想要学习,那么你只需要添加文件夹对话框的选项

var thePath = myDocument.path;
// manually save det destination folder
var outputFolder = Folder.selectDialog("Choose folder to save files to");

然后在保存文件时设置

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