Skip to main content
Inspiring
November 17, 2020
Answered

Exporting Visible layers in photoshop 2020

  • November 17, 2020
  • 2 replies
  • 688 views

Hi, 

I try to export only visible layer with this script found here :
https://community.adobe.com/t5/photoshop/exporting-visible-layers-in-photoshop-using-script/m-p/8276771?page=1

 

But somthing goes wrong with this line :

  var current; // current layer reference

 

have you got an idea ?

thank

This topic has been closed for replies.
Correct answer jeremybep

Ok, i fix it :

This script export only visible layer

function exportPNG(){
  var documents = app.activeDocument;
  var docName = app.activeDocument.name;
  var docNameNoExt = app.activeDocument.name.split('.')[0];
  var docPath = app.activeDocument.path.fsName;
  var pngSrvOutput = new Folder("\\\\server_network\\production\\")
  if (!pngSrvOutput.exists){
    pngSrvOutput.create()
  }
  var isVisible = new Array();
  //Show each layer each time and save a snapshot
  for (var i = 0; i < documents.layers.length; i++) {
    isVisible[i] = documents.layers[i].visible == true;
    }
  for (var i = 0; i < documents.layers.length; i++){
    //Hide all the layers
    for (var j = 0; j < documents.layers.length; j++) {
      documents.layers[j].visible = false;
    }
    // show layer
    if (isVisible[i]){
      var layerIndex = i;
      documents.layers[layerIndex].visible = true;
      var layerName = documents.layers[layerIndex].name;    // save
      var file = new File(pngSrvOutput + "\\" + docNameNoExt + "_" + layerName + "-1.png");
      var saveOptions = new PNGSaveOptions();
      documents.saveAs(file, saveOptions, true, Extension.LOWERCASE);
    }
  }
  for (var i = 0; i < documents.layers.length; i++){
    documents.layers[i].visible = isVisible[i]
  }
}
exportPNG()

2 replies

Kukurykus
Legend
November 18, 2020

That's not exporting single layers, but simple saving visible ones.

jeremybepAuthor
Inspiring
November 18, 2020

That what i want ?!

see top of: 
I try to export only visible layer with this script found here

Kukurykus
Legend
November 18, 2020

I mean exporting is not the same as saving, and in Photoshop these functions are similar only.

jeremybepAuthor
Inspiring
November 17, 2020

oops, this line, sorry : (just above)

settings = current.visible;

 

jeremybepAuthor
Inspiring
November 18, 2020

ok, try to do it with anoterh way, but it exxport only first layer

var isVisible = new Array();
  //Show each layer each time and save a snapshot
  for (var i = 0; i < documents.layers.length; i++) {
    isVisible = documents.layers[i].visible;
    //Hide all the layers
    for (var j = 0; j < documents.layers.length; j++) {
      documents.layers[j].visible = false;
    }
    // show layer
    var layerIndex = i;
    documents.layers[layerIndex].visible = true;
    var layerName = documents.layers[layerIndex].name;
    // save
    if (isVisible){
      var file = new File(pngSrvOutput + "\\" + docNameNoExt + "_" + layerName + ".png");
      var saveOptions = new PNGSaveOptions();
      documents.saveAs(file, saveOptions, true, Extension.LOWERCASE);
    }
  }

 I would like to export only visible layer

jeremybepAuthorCorrect answer
Inspiring
November 18, 2020

Ok, i fix it :

This script export only visible layer

function exportPNG(){
  var documents = app.activeDocument;
  var docName = app.activeDocument.name;
  var docNameNoExt = app.activeDocument.name.split('.')[0];
  var docPath = app.activeDocument.path.fsName;
  var pngSrvOutput = new Folder("\\\\server_network\\production\\")
  if (!pngSrvOutput.exists){
    pngSrvOutput.create()
  }
  var isVisible = new Array();
  //Show each layer each time and save a snapshot
  for (var i = 0; i < documents.layers.length; i++) {
    isVisible[i] = documents.layers[i].visible == true;
    }
  for (var i = 0; i < documents.layers.length; i++){
    //Hide all the layers
    for (var j = 0; j < documents.layers.length; j++) {
      documents.layers[j].visible = false;
    }
    // show layer
    if (isVisible[i]){
      var layerIndex = i;
      documents.layers[layerIndex].visible = true;
      var layerName = documents.layers[layerIndex].name;    // save
      var file = new File(pngSrvOutput + "\\" + docNameNoExt + "_" + layerName + "-1.png");
      var saveOptions = new PNGSaveOptions();
      documents.saveAs(file, saveOptions, true, Extension.LOWERCASE);
    }
  }
  for (var i = 0; i < documents.layers.length; i++){
    documents.layers[i].visible = isVisible[i]
  }
}
exportPNG()