• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
1

Would like to automate open stacks as layers + run action. Possible with script??

Explorer ,
Jul 22, 2011 Jul 22, 2011

Copy link to clipboard

Copied

I would like to automate part of my workflow that involves opening stacked images as layers in Ps CS5 and running an PS action that composites the layers and processes the image. Something similar to 'Process Collection' in Bridge CS5 only with my own action instead of merge to HDR/Panorama.

Apparently this is possible with Mac 'Automator' - is there anything I can do in Windows? I don't have any experience with writing scripts, but have friends that can help. Can someone tell me if its possible and point me in the right direction please?

TOPICS
Actions and scripting

Views

15.7K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Guru , Jul 24, 2011 Jul 24, 2011

For the name, I was thinking more along the lines of using the name of the first image in the stack( or top layer name ) as part of the filename.

For the action, I think it depends on the action and how the script is to be used. My tests had images stacks of three images each. The action selects the top layer, inverts, selects the layer below, inverts, selects the layer below and inverts. So it inverts all the layers because it expects there to be three layers. I guess you could script running th

...

Votes

Translate

Translate
Adobe
Explorer ,
Jul 23, 2015 Jul 23, 2015

Copy link to clipboard

Copied

Hi JJMack, Thanks a lot for your response. Really appreciate it.

I did this from bridge--I tried almost all of the script variations shared here- the scripts add a command at the bottom of the tool menu- in my case I tried two scripts and you can see double of the same command on the bottom of the tool menu (see my pics).

Not really sure what I am doing wrong here because yes photoshop I imagined would open automatically- but nothing happens at all- not even an error message when I click "Stack to Layers".

As for my info:

Adobe CS6 version 13.0

Bridge CS6,5.0.0.399x64

Windows 8,

Alienware 18, 32gb ram, gtx780, 3gb vid memory...

Untitled111.jpgUntitled1112.jpgUntitled1113.jpgUntitled1114.jpgUntitled1115.jpg

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 23, 2015 Jul 23, 2015

Copy link to clipboard

Copied

I have not run those scripts, I see three posted  in this thread  all with the same name.  Two of them  required the user to modify the do action part specify their Action Set and Action names... Its bed time now I may be able to look in the morning.  Looks like these scripts also require the image processor script and load files into stack script and be in particular folders.

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jul 24, 2015 Jul 24, 2015

Copy link to clipboard

Copied

I do not actually use the Bridge much  and it looks like you do not either and you know less about scripting then I do.

You showed 5 screen captures two of bridge three of EST.

The first Bridge capture shows your tools menu and it looks like you copies at least two script that add the same menu item name to the tool menu into your user id Adobe Bridge startup scripts folder.

.

The second bridge shows your viewing a af folder with two folder in it one named stack 1 the other Stack 2 and stack 1 is selected.  Therse  are folders not bridge stacks. You create bridge stacks using the stacks menu or bridges right click menu stacks item.

Your three EST capture show three scripts that process Bridge stacks which you have none of.  The first script add "Stacks to Layers" to  the tools menu. The script also has a doAction() statement you were requited to change to identify you action set and action names.

the second script also processes Bridge stacks but add no name to the tools menu. I guess it must be run from the EST with Bridge targeted. I only use the EST for its object viewer.

The third script also process stacks and adds "Stacks to Layers" to the Tools menu.  This script does no  do action so it should work from the Tool menu and process the selected bridge stacks which you need to create and target before using Tools>Stacks to Layers..

It would leave open in Photoshop one document for each stack and contain  a image layer for each image in its stack.  on top of each other not auto aligned.

Philip Cord wrote the bridge scripts that add the "Stacks to Layers" to the tool menu he also wrote this

"

I am not sure that pushing the files from Bridge to Photoshop is the best way to do this. It might be better to do it the other way round.

This is a Photoshop script. (its in his append)

To use open Bridge with the stacks to process then run this script.

Make amendments for the action first.

You could test both and see what is best for you.

"

.

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 24, 2015 Jul 24, 2015

Copy link to clipboard

Copied

JJMack you are awesome- I really appreciate you helping me out!

I tried pre-stacking my image sets and now it works. I used the script from the 3rd image which requires no do action (since I have no clue what to add as an action haha). I was then able to automate the auto alignment in photoshop.

The problem is I have thousands of images that need to be stacked into groups of 5 so they can be utilized by the script. Currently, my images are all in one folder, each frame named as "capture_0001_0, capture_0001_1, capture_0001_2, capture_0001_3,capture_0001_4" for one set/frame, another frame would be "capture_0002_0, capture_0002_1, capture_0002_2, capture_0002_3,capture_0002_4".

I know how to rename them in sequence if needed. I can put each set into a separate folder (was my original plan) but seems like the stack script only works in batch if all stacks are in one folder (as per script #3 that I used).

Anybody have an idea as to how I can stack my images in batch as groups of 5- in bridge or elsewhere-  from them all being in a single folder? Note that the time stamps on my images are inaccurate so it is hard to stack based on capture interval unfortunately.

Thanks! (note I am going to be away now until Sunday camping- if I get a connection I will respond but if not I will be back Sunday to answer and test any suggestions). Thanks JJMack, and anbody else who helps, and have a nice weekend.

Alex

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 24, 2015 Jul 24, 2015

Copy link to clipboard

Copied

With that naming convention this script should stack your files.

#target bridge 

   if( BridgeTalk.appName == "bridge" ) { 

fiveStack = MenuElement.create("command", "Five Stack", "at the end of submenu/Stack");

}

fiveStack.onSelect = function () {

var fileList = Folder(app.document.presentationPath).getFiles(/.+_\d{4}_0/);

for(var a in fileList){

    var firstFile = decodeURI(fileList.name.match(/.+_\d{4}_/));

    var filesToStack = Folder(app.document.presentationPath).getFiles("*"+firstFile+"*");

    if(filesToStack.length >= 2) {

        app.document.deselectAll();

        for(var s in filesToStack){

        app.document.select(new Thumbnail(filesToStack));

        }

    app.document.chooseMenuItem("StackGroup");

        }

    }

};

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 26, 2015 Jul 26, 2015

Copy link to clipboard

Copied

Hey Phillip-

I can't express how happy I am to have tested this and found how amazing it works!

You have saved my dozens of man hours manually sorting imagery. I can also use this for my drone imagery sets. Incredible.

I hope there is some way I can repay you and if not I am forever in your debt. That goes for JJMack as well.

I'll mess around some more and see how the processing goes for all my images using these scripts.

Another hurdle, which may be hard to automate in photoshop, is stacking the images so they save as a 5 channel image. If anyone has some ideas let me know. At the moment I align the images then I save them out as separate bands (in their aligned state) and stack them in another software (Erdas Imagine). Photoshop always tries to flatten the layers which then kills all the info from the other channels. It also tends to add alpha channels which I don't need.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 27, 2015 Jul 27, 2015

Copy link to clipboard

Copied

Here is a script you could try on a test folder of a few stacks. It should create the PSD in Photoshop, align the layers then save the PSD out to a folder called "combined" of the selected folder in Bridge.

#target bridge

if( BridgeTalk.appName == "bridge" ) {   

stacksToLayersII = new MenuElement("command", "Stacks To LayersII",  "at the end of submenu/Stack"); 

stacksToLayersII.onSelect = function () { 

var stacks = app.document.stacks; 

var stackCount = stacks.length; 

for(var s = 0;s<stackCount;s++){ 

  var stackFiles = getStackFiles( stacks ); 
  var Name = decodeURI(stackFiles[0].name).replace(/\.[^\.]+$/, '');
  if(stackFiles.length> 1){ 
       var bt = new BridgeTalk; 
       bt.target = "photoshop"; 
       var myScript = ("var ftn = " + psRemote.toSource() + "; ftn("+stackFiles.toSource() + "," + Name.toSource() +");"); 
       bt.body = myScript; 
       bt.onResult = function( inBT ) {myReturnValue(inBT.body); } 
       bt.send(500); 
 

function getStackFiles( stack ){ 

  var files = new Array(); 
  for( var f = 0; f<stack.thumbnails.length;f++){ 
       files.push(stack.thumbnails.spec); 
 
  return files; 

}; 

function myReturnValue(str){ 

  res = str; 

function psRemote(stackFiles,Name){ 

app.bringToFront();
  var loadLayersFromScript = true; 
  var strPresets = localize ("$$$/ApplicationPresetsFolder/Presets=Presets"); 
  var strScripts = localize ("$$$/PSBI/Automate/ImageProcessor/Photoshop/Scripts=Scripts"); 
  var strFile2Stack = "Load Files into Stack.jsx"; 
  var ipFilePath = app.path + "/" + strPresets + "/" + strScripts + "/" + strFile2Stack; 
  var ipFile = new File (ipFilePath); 
  $.evalFile( ipFile ); 
  loadLayers.intoStack(stackFiles); 
  psdSaveOptions = new PhotoshopSaveOptions();
  psdSaveOptions.embedColorProfile = true;
  psdSaveOptions.alphaChannels = true;
  var BT = new BridgeTalk();

BT.target='bridge';

BT.body ="var ftn = " + script.toSource() + "; ftn();";

BT.onResult = function( inBT ) { inFolder = inBT.body; }

BT.onError = function( ohShi ) {  alert(ohShi.body)}

BT.send(10);

var outputFolder = new Folder(inFolder + "/Combined");

if(!outputFolder.exists) outputFolder.create();

var saveFile = new File(outputFolder + '/'+ Name +'.psd');

try{

app.runMenuItem(stringIDToTypeID('selectAllLayers'));

var desc1 = new ActionDescriptor();

var ref1 = new ActionReference();

ref1.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );

desc1.putReference( charIDToTypeID('null'), ref1 );

desc1.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('ADSt'), stringIDToTypeID('ADSContent') );

executeAction( charIDToTypeID('Algn'), desc1, DialogModes.NO );

activeDocument.saveAs(saveFile, psdSaveOptions, true, Extension.LOWERCASE);

app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}catch(e){alert(e + "\n" + e.line);};

function script(){

return decodeURI(Folder(app.document.presentationPath).fullName).toString();

}

};

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 27, 2015 Jul 27, 2015

Copy link to clipboard

Copied

Hey Phillip-

How are you able to learn all this stuff? Incredible. Where is the database you access to learn all these commands?

The script works amazing- is there a way to get a script to run an automation action which I custom made in photoshop? Its a pretty complex action but I am thinking that if it can identify the action by name, run the action on all the bands and save it out as a tiff (with layers and no compression) it would be amazing. The action is sort of necessary since I also do things like crop the frames at specific coordinates after alignment, and paste bands into the channel pallet, white balance calibration etc.

I already made the action- spent hours on it. I called it "Align" . Let me know if you think it is possible! Thanks so much

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 28, 2015 Jul 28, 2015

Copy link to clipboard

Copied

Ok, here is another script that you will need to modify before use!

To run an action  in javaScript it needs the Action Name and ActionSet Name and these are case sensitive!

I.E.

doAction("Align","MyStackActions");

Lets hope this works.

#target bridge

if( BridgeTalk.appName == "bridge" ) {   

stacksToLayersII = new MenuElement("command", "Stacks To LayersII",  "at the end of submenu/Stack"); 

stacksToLayersII.onSelect = function () { 

var stacks = app.document.stacks; 

var stackCount = stacks.length; 

for(var s = 0;s<stackCount;s++){ 

  var stackFiles = getStackFiles( stacks ); 
  var Name = decodeURI(stackFiles[0].name).replace(/\.[^\.]+$/, '');
  if(stackFiles.length> 1){ 
       var bt = new BridgeTalk; 
       bt.target = "photoshop"; 
       var myScript = ("var ftn = " + psRemote.toSource() + "; ftn("+stackFiles.toSource() + "," + Name.toSource() +");"); 
       bt.body = myScript; 
       bt.onResult = function( inBT ) {myReturnValue(inBT.body); } 
       bt.send(500); 
 

function getStackFiles( stack ){ 

  var files = new Array(); 
  for( var f = 0; f<stack.thumbnails.length;f++){ 
       files.push(stack.thumbnails.spec); 
 
  return files; 

}; 

function myReturnValue(str){ 

  res = str; 

function psRemote(stackFiles,Name){ 

app.bringToFront();
  var loadLayersFromScript = true; 
  var strPresets = localize ("$$$/ApplicationPresetsFolder/Presets=Presets"); 
  var strScripts = localize ("$$$/PSBI/Automate/ImageProcessor/Photoshop/Scripts=Scripts"); 
  var strFile2Stack = "Load Files into Stack.jsx"; 
  var ipFilePath = app.path + "/" + strPresets + "/" + strScripts + "/" + strFile2Stack; 
  var ipFile = new File (ipFilePath); 
  $.evalFile( ipFile ); 
  loadLayers.intoStack(stackFiles); 
  psdSaveOptions = new PhotoshopSaveOptions();
  psdSaveOptions.embedColorProfile = true;
  psdSaveOptions.alphaChannels = true;
  var BT = new BridgeTalk();

BT.target='bridge';

BT.body ="var ftn = " + script.toSource() + "; ftn();";

BT.onResult = function( inBT ) { inFolder = inBT.body; }

BT.onError = function( ohShi ) {  alert(ohShi.body)}

BT.send(10);

var outputFolder = new Folder(inFolder + "/Combined");

if(!outputFolder.exists) outputFolder.create();

var saveFile = new File(outputFolder + '/'+ Name +'.tif');

try{

/******Remove these lines if you want your action to do all the work ***/

app.runMenuItem(stringIDToTypeID('selectAllLayers'));

var desc1 = new ActionDescriptor();

var ref1 = new ActionReference();

ref1.putEnumerated( charIDToTypeID('Lyr '), charIDToTypeID('Ordn'), charIDToTypeID('Trgt') );

desc1.putReference( charIDToTypeID('null'), ref1 );

desc1.putEnumerated( charIDToTypeID('Usng'), charIDToTypeID('ADSt'), stringIDToTypeID('ADSContent') );

executeAction( charIDToTypeID('Algn'), desc1, DialogModes.NO );

/****************************************************************************/

/**This actionset name needs to be amended to suit N.B. IT IS CASE SENSITIVE**/

/**** This section runs an action on each layer in turn ****/

app.runMenuItem(stringIDToTypeID('selectNoLayers'));

activeDocument.activeLayer = activeDocument.layers[1];

var Count = activeDocument.layers.length;
for(var d = 0 ;d < Count; d++){
activeDocument.activeLayer = activeDocument.layers;
/* amend to use your action N.B. it is case sensitive */
doAction("Align","Action Set Name");
}

/*************************************************************************/

tiffSaveOptions = new TiffSaveOptions();

tiffSaveOptions.embedColorProfile = true;

tiffSaveOptions.alphaChannels = true;

tiffSaveOptions.layers = true;

tiffSaveOptions.imageCompression = TIFFEncoding.NONE;

activeDocument.saveAs(saveFile, tiffSaveOptions, true, Extension.LOWERCASE);

app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}catch(e){alert(e + "\n" + e.line);};

function script(){

return decodeURI(Folder(app.document.presentationPath).fullName).toString();

}

};

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 28, 2015 Jul 28, 2015

Copy link to clipboard

Copied

Hey Phillip - So I managed to get my action working with your script so thanks! I tried to mod your last script but can't figure out how to get the action to run once (it seems to run once per layer). Basically the action I made accounts for all layers- it can be run without any currently selected and it automatically selects the all the layers to modify.

#target bridge

if( BridgeTalk.appName == "bridge" ) { 

stacksToLayersII = new MenuElement("command", "Stacks To LayersII",  "at the end of submenu/Stack");

}

stacksToLayersII.onSelect = function () {

var stacks = app.document.stacks;

var stackCount = stacks.length;

for(var s = 0;s<stackCount;s++){

var stackFiles = getStackFiles( stacks );
var Name = decodeURI(stackFiles[0].name).replace(/\.[^\.]+$/, '');
if(stackFiles.length> 1){
var bt = new BridgeTalk;
bt.target = "photoshop";
var myScript = ("var ftn = " + psRemote.toSource() + "; ftn("+stackFiles.toSource() + "," + Name.toSource() +");");
bt.body = myScript;
bt.onResult = function( inBT ) {myReturnValue(inBT.body); }
bt.send(500);
}

}

function getStackFiles( stack ){

var files = new Array();
for( var f = 0; f<stack.thumbnails.length;f++){
files.push(stack.thumbnails.spec);
}
return files;

};

function myReturnValue(str){

res = str;

}

function psRemote(stackFiles,Name){

app.bringToFront();

var loadLayersFromScript = true;
var strPresets = localize ("$$$/ApplicationPresetsFolder/Presets=Presets");
var strScripts = localize ("$$$/PSBI/Automate/ImageProcessor/Photoshop/Scripts=Scripts");
var strFile2Stack = "Load Files into Stack.jsx";
var ipFilePath = app.path + "/" + strPresets + "/" + strScripts + "/" + strFile2Stack;
var ipFile = new File (ipFilePath);
$.evalFile( ipFile );
loadLayers.intoStack(stackFiles);
psdSaveOptions = new PhotoshopSaveOptions();
psdSaveOptions.embedColorProfile = true;
psdSaveOptions.alphaChannels = true;
var BT = new BridgeTalk();

BT.target='bridge';

BT.body ="var ftn = " + script.toSource() + "; ftn();";

BT.onResult = function( inBT ) { inFolder = inBT.body; }

BT.onError = function( ohShi ) {  alert(ohShi.body)}

BT.send(10);

var outputFolder = new Folder(inFolder + "/Combined");

if(!outputFolder.exists) outputFolder.create();

var saveFile = new File(outputFolder + '/'+ Name +'.tif');

try{

/**This actionset name needs to be amended to suit N.B. IT IS CASE SENSITIVE**/

/**** This section runs an action on each layer in turn ****/

app.runMenuItem(stringIDToTypeID('selectNoLayers'));

activeDocument.activeLayer = activeDocument.layers[5];

var Count = activeDocument.layers.length;

for(var d = 0 ;d < Count; d++){

activeDocument.activeLayer = activeDocument.layers;

/* amend to use your action N.B. it is case sensitive */

doAction("Align","Default Actions");

}

/*************************************************************************/

tiffSaveOptions = new TiffSaveOptions();

tiffSaveOptions.embedColorProfile = true;

tiffSaveOptions.alphaChannels = true;

tiffSaveOptions.layers = true;

tiffSaveOptions.imageCompression = TIFFEncoding.NONE;

activeDocument.saveAs(saveFile, tiffSaveOptions, true, Extension.LOWERCASE);

app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}catch(e){alert(e + "\n" + e.line);};

function script(){

return decodeURI(Folder(app.document.presentationPath).fullName).toString();

}

}

};

I took out the section that states I should remove if I want my action to do all the work.... and I also tried adding 5 to active document layers (bolded) but no dice.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 29, 2015 Jul 29, 2015

Copy link to clipboard

Copied

This should run your action just the once, please change the Action Set name to suit.

#target bridge

if( BridgeTalk.appName == "bridge" ) {   

stacksToLayersII = new MenuElement("command", "Stacks To LayersII",  "at the end of submenu/Stack"); 

stacksToLayersII.onSelect = function () { 

var stacks = app.document.stacks; 

var stackCount = stacks.length; 

for(var s = 0;s<stackCount;s++){ 

  var stackFiles = getStackFiles( stacks ); 
  var Name = decodeURI(stackFiles[0].name).replace(/\.[^\.]+$/, '');
  if(stackFiles.length> 1){ 
       var bt = new BridgeTalk; 
       bt.target = "photoshop"; 
       var myScript = ("var ftn = " + psRemote.toSource() + "; ftn("+stackFiles.toSource() + "," + Name.toSource() +");"); 
       bt.body = myScript; 
       bt.onResult = function( inBT ) {myReturnValue(inBT.body); } 
       bt.send(500); 
 

function getStackFiles( stack ){ 

  var files = new Array(); 
  for( var f = 0; f<stack.thumbnails.length;f++){ 
       files.push(stack.thumbnails.spec); 
 
  return files; 

}; 

function myReturnValue(str){ 

  res = str; 

function psRemote(stackFiles,Name){ 

app.bringToFront();
  var loadLayersFromScript = true; 
  var strPresets = localize ("$$$/ApplicationPresetsFolder/Presets=Presets"); 
  var strScripts = localize ("$$$/PSBI/Automate/ImageProcessor/Photoshop/Scripts=Scripts"); 
  var strFile2Stack = "Load Files into Stack.jsx"; 
  var ipFilePath = app.path + "/" + strPresets + "/" + strScripts + "/" + strFile2Stack; 
  var ipFile = new File (ipFilePath); 
  $.evalFile( ipFile ); 
  loadLayers.intoStack(stackFiles); 
  psdSaveOptions = new PhotoshopSaveOptions();
  psdSaveOptions.embedColorProfile = true;
  psdSaveOptions.alphaChannels = true;
  var BT = new BridgeTalk();

BT.target='bridge';

BT.body ="var ftn = " + script.toSource() + "; ftn();";

BT.onResult = function( inBT ) { inFolder = inBT.body; }

BT.onError = function( ohShi ) {  alert(ohShi.body)}

BT.send(10);

var outputFolder = new Folder(inFolder + "/Combined");

if(!outputFolder.exists) outputFolder.create();

var saveFile = new File(outputFolder + '/'+ Name +'.tif');

try{

/* amend to use your action N.B. it is case sensitive */
doAction("Align","Action Set Name");

   

/*************************************************************************/

tiffSaveOptions = new TiffSaveOptions();

tiffSaveOptions.embedColorProfile = true;

tiffSaveOptions.alphaChannels = true;

tiffSaveOptions.layers = true;

tiffSaveOptions.imageCompression = TIFFEncoding.NONE;

activeDocument.saveAs(saveFile, tiffSaveOptions, true, Extension.LOWERCASE);

app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}catch(e){alert(e + "\n" + e.line);};

function script(){

return decodeURI(Folder(app.document.presentationPath).fullName).toString();

}

};

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jul 29, 2015 Jul 29, 2015

Copy link to clipboard

Copied

Thanks Phillip- I tried the script and it runs perfectly. Photoshop wont run a batch process with my action (I get errors) but the batch works with your script! Simply awesome. I owe you many beers. Many. Thanks so much. Now I will learn more on how to script so I don't have to bother you guys haha.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jul 29, 2015 Jul 29, 2015

Copy link to clipboard

Copied

LATEST

With the time you save you can go for few beers!.

Good luck on learning scripting.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines