Skip to main content
Participant
July 1, 2014
Question

Save As PNG script

  • July 1, 2014
  • 1 reply
  • 16181 views

Hello,

I'd like some help with this script if possible

I wanted to save my open file to PNG format in the same location with the same name. I managed to do that with the scripts below.

This is a script I found on the forum:

#target photoshop

main();

function main(){

if(!documents.length) return;

try{

    var Path = decodeURI(activeDocument.path.parent);

    }catch(e){return;}

if(!Folder(Path).exists){

    alert(Path + " Does not exist!");

    return;

    }

var Name = decodeURI(app.activeDocument.name).replace(/\.[^\.]+$/, '');

var saveFile = File(Path + "/" + Name + "_bump.png");

sfwPNG24(saveFile);

//Uncomment the line below if you want to close the document.

//app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}

function sfwPNG24(saveFile){

var pngOpts = new ExportOptionsSaveForWeb;

pngOpts.format = SaveDocumentType.PNG

pngOpts.PNG8 = false;

pngOpts.transparency = true;

pngOpts.interlaced = false;

pngOpts.quality = 100;

activeDocument.exportDocument(new File(saveFile),ExportType.SAVEFORWEB,pngOpts);

}

And this is how I modified it (so that it saves the file in the same folder and doesn't add any suffix to the name; also changed to save as PNG instead of using save for web):

#target photoshop

main();

function main(){

if(!documents.length) return;

try{

    var Path = decodeURI(activeDocument.path);

    }catch(e){return;}

if(!Folder(Path).exists){

    alert(Path + " Does not exist!");

    return;

    }

var Name = decodeURI(app.activeDocument.name).replace(/\.[^\.]+$/, '');

var saveFile = File(Path + "/" + Name + ".png");

sfwPNG24(saveFile);

//Uncomment the line below if you want to close the document.

//app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}

function sfwPNG24(saveFile){

var pngOpts = new PNGSaveOptions;

pngOpts.compression = 9;

pngOpts.interlaced = false;

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

}

My problem:

I don't know what's happening when I try to save a file just created (never saved yet). I thought I would get the Alert message but it doesn't seem to be the case (maybe the alert message in the code is related to a different condition?)

I would like to have a default folder/path in the code so that, if the file hasn't been saved yet, it would be saved in the specified location.

If anyone could do it I would really appreciate it!

Thanks

This topic has been closed for replies.

1 reply

JJMack
Community Expert
Community Expert
July 2, 2014

did not get that far.... Your catch ended the script without a notice to you. Try the changed line below in the catch.

#target photoshop

main();

function main(){

if(!documents.length) return;

try{

    var Path = decodeURI(activeDocument.path);

    }catch(e){alert(e); return;}   //Let the user know about the problem

if(!Folder(Path).exists){

    alert(Path + " Does not exist!");

    return;

    }

var Name = decodeURI(app.activeDocument.name).replace(/\.[^\.]+$/, '');

var saveFile = File(Path + "/" + Name + ".png");

sfwPNG24(saveFile);

//Uncomment the line below if you want to close the document.

//app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);

}

function sfwPNG24(saveFile){

var pngOpts = new PNGSaveOptions;

pngOpts.compression = 9;

pngOpts.interlaced = false;

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

}

JJMack
rcraighead
Legend
February 1, 2019

I have appropriate this script to save PNG files in my workflow. It works great, but I have one question:

How can I change it to NOT flatten the file? I use a different script to merge all layers and name the remaining layer. This name is lost when I save the PNG with the script from this thread. I assume one of the settings in this function can be change to NOT flatten. What would it be?

function sfwPNG24(saveFile){

var pngOpts = new PNGSaveOptions;

pngOpts.compression = 9;

pngOpts.interlaced = false;

activeDocument.saveAs(saveFile, pngOpts, false, Extension.LOWERCASE);

}

Thanks!

Legend
February 1, 2019

rcraighead 

I have appropriate this script to save PNG files in my workflow. It works great, but I have one question:

How can I change it to NOT flatten the file? I use a different script to merge all layers and name the remaining layer. This name is lost when I save the PNG with the script from this thread. I assume one of the settings in this function can be change to NOT flatten. What would it be?

function sfwPNG24(saveFile){ var pngOpts = new PNGSaveOptions; pngOpts.compression = 9; pngOpts.interlaced = false; activeDocument.saveAs(saveFile, pngOpts, false, Extension.LOWERCASE); }

Thanks!

If I get it right, change

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