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

Check if artLayer has color in it ?

Engaged ,
Oct 29, 2016 Oct 29, 2016

Hey

I load in photoshop 20 layers. As I load them I'd like to check if a layer has any RGB value or its just pure black, I guess it could be done via levels but not sure.

In any case how can I check if active layer has a color value in it? Then if there is just black I can just delete the layer.

I guess I would also like to check if newly created channel with color in it also has data in it.. I know if its black and when I try to CTRL+Click to select I will get a warning that channel is empty and nothing can be selected... I guess is how can I capture that check and get a true/false result out of it.

Regards

Dariusz

Message was edited by: Dariusz Makowski

TOPICS
Actions and scripting
528
Translate
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
Adobe
Engaged ,
Oct 31, 2016 Oct 31, 2016
LATEST

Hi Dariusz,

 

Try this Code..

Special thanks to c.pfaffenbichler

 

-yajiv

 

#target "photoshop"

$.level=2;

function GetLayerValue(CHN){

    var myDocument = app.activeDocument;

    var theHistograms = new Array;

    var theResults = new Array;

    for (var m = 0; m < CHN; m++) {

        var thisHisto = myDocument.channels[m].histogram;

        var theCheck = false;

        var theNumber = 0;

        // check for the first non-zero value;

        while (theCheck == false) {

            if (thisHisto[theNumber] > 0) {

            theCheck = true;

            var thisNumber = (255 - theNumber) * 100 / 255;

            theResults.push (Math.round(thisNumber));

        };

        theNumber++

        };

        theHistograms.push(myDocument.channels[m].histogram);

    };

    return theResults;

}

 

 

var docRef = app.activeDocument;

var layerRef = docRef.artLayers;

var theNumber = docRef.layers.length-1;

  for (var m = theNumber; m >= 0;m--){

      LayerVisible(docRef);

      var theLayer = docRef.layers[m];

      if (theLayer.typename == "ArtLayer"){

        theLayer.visible=true;

        if (app.activeDocument.mode == DocumentMode.CMYK) {

            var Colvalue= GetLayerValue(4)

            theLayer.visible=false;

            alert("Alert!\nLayer Name : "+theLayer.name +"\nColor value  : "+Colvalue);

            if(Colvalue[0]==0 && Colvalue[1]==0 && Colvalue[2]==0 && Colvalue[3]>0){

                alert(theLayer.name +" layer have pure black value");

            }

        }

        if (app.activeDocument.mode == DocumentMode.RGB) {

            var Colvalue= GetLayerValue(3);

            theLayer.visible=false;

            alert("Alert!\nLayer Name : "+theLayer.name +"\nColor value  : "+Colvalue);

            if(Colvalue[0]==0 && Colvalue[1]==0 && Colvalue[2]==0){

                alert(theLayer.name +" layer have pure black value");

            }

        }

    }

}

 

 

function LayerVisible(docRef){

    var l=docRef.layers.length

    while(l--){

        docRef.artLayers.visible=false;

    }

}

Translate
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