skip to Main Content

This one is a big one

I have a Photoshop document that has 8 Layers in it. I need to create a way to use those 8 layers and create certain combinations depending on the rules below…

Example:

{1,2,3} {1,2,4} {1,2,5} {1,2,6} {1,2,7} {1,2,8} {1,3,4} {1,3,5} {1,3,6} {1,3,7} {1,3,8} {1,4,5} {1,4,6} {1,4,7} {1,4,8} {1,5,6} {1,5,7} {1,5,8} {1,6,7} {1,6,8} {1,7,8} {2,3,4} {2,3,5} {2,3,6} {2,3,7} {2,3,8} {2,4,5} {2,4,6} {2,4,7} {2,4,8} {2,5,6} {2,5,7} {2,5,8} {2,6,7} {2,6,8} {2,7,8} {3,4,5} {3,4,6} {3,4,7} {3,4,8} {3,5,6} {3,5,7} {3,5,8} {3,6,7} {3,6,8} {3,7,8} {4,5,6} {4,5,7} {4,5,8} {4,6,7} {4,6,8} {4,7,8} {5,6,7} {5,6,8} {5,7,8} {6,7,8}

Using the above combination, each combination needs to be saved out as an image. SO if you take one of the above combinations for instance, {3,6,8}. Photoshop should use layers 3,6,8 to create a new image or layer comprising of those three segments.

Not sure how to start this. So far I have worked out all possible combinations using this great site:

http://www.mathsisfun.com/combinatorics/combinations-permutations-calculator.html

2

Answers


  1. You can write a script to turn off the layers you don’t want and then save to a new file.

    to turn a layer off:

    var doc = app.activeDocument;
    var lyr = doc.artLayers[index];
    lyr.visible = false;
    

    The document object has a ‘saveas’ method that you can use to specify the file type and location that you require the output to be.

    More info can be found in the Photoshop Javascript Reference pdf in your photoshop installation directory.

    Login or Signup to reply.
  2. This function will do what you want:

    gimmeTheseLayers("3", "5", "spoon");
    
    function gimmeTheseLayers(l1, l2, l3)
    {
      for (var i = 0; i < numOfLayers -1; i++)
      {
       // look for the appropriate layer
       var l = app.activeDocument.layers[i];
       if (l.name == l1 || l.name == l2 || l.name == l3) l.visible = true;
       else l.visible = false;
    
       // keep the background layer on
       if (l.isBackgroundLayer == true) l.visible = true;
     }
    

    }

    Just feed it the layer name (in quotes) and it’ll keep those layers visible, it’ll switch off all the rest except the background. Won’t work with layersets!

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search