Greetings, Unfortunately, my scripting knowledge is very minimal. In using this script, the script times out and no output files occur. I am on a pc running Photoshop CC (online subscription, latest update). It was suggested to me by another forum member to start a new discussion thread here to assist with this problem. This is what I have: a mockup file of a canvas wall print with the main single image set as a transformed smart object a folder of images resized to fit said smart object This is what I would like a script to do (if possible): for every image in said folder replace smart object with images save each new mockup (one for each new image) as a JPG file. saved name should be the original image file name (saved in a different directory). if this naming convention is not possible, its ok as i can rename the files later. We have over 50k of mockups to do for this particular canvas shape/size.... Any suggestions on how I could streamline this process without having to manually replace and save? THANK YOU!!! // replace smart object’s content and save psd; // 2011, use it at your own risk; #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; // psd options; psdOpts = new PhotoshopSaveOptions(); psdOpts.embedColorProfile = true; psdOpts.alphaChannels = true; psdOpts.layers = true; psdOpts.spotColors = true; // 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 , theLayer); var theNewName = theFiles .name.match(/(.*)\.[^\.]+$/)[1]; //Raise color picker for Back cover; try { app.activeDocument.activeLayer = app.activeDocument.layers[app.activeDocument.layers.length - 1]; // ======================================================= var idsetd = charIDToTypeID( "setd" ); var desc7 = new ActionDescriptor(); var idnull = charIDToTypeID( "null" ); var ref2 = new ActionReference(); var idcontentLayer = stringIDToTypeID( "contentLayer" ); var idOrdn = charIDToTypeID( "Ordn" ); var idTrgt = charIDToTypeID( "Trgt" ); ref2.putEnumerated( idcontentLayer, idOrdn, idTrgt ); desc7.putReference( idnull, ref2 ); var idT = charIDToTypeID( "T " ); var desc8 = new ActionDescriptor(); var idClr = charIDToTypeID( "Clr " ); var idsolidColorLayer = stringIDToTypeID( "solidColorLayer" ); desc7.putObject( idT, idsolidColorLayer, desc8 ); executeAction( idsetd, desc7, DialogModes.ALL ); } catch (e) {}; //save jpg; myDocument.saveAs((new File(thePath+"/"+theName+"_"+theNewName+".psd")),psdOpts,true); } } } }; ////// get psds, tifs and jpgs from files ////// function getFiles (theFile) { if (theFile.name.match(/\.(psd|tif|jpg)$/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 };
... View more