Skip to main content
ParveenKaloi
Participating Frequently
March 28, 2018
Answered

I'm not able to make a selection with script to some of specific colors

  • March 28, 2018
  • 1 reply
  • 1170 views

Hello,

I'm working on some script stuff which selects random colors by input, but there some problem with photoshop to select some colors. Just giving RGB Values through script & it's not making a selection.

Works with most of random colors, but not all. please please gimme some solution.

Here are RGB values which photoshop not selecting.

1. R:4, G:99, B:138

2. R:109, G:225, B:147

Here is the script:

var chercheCouleur = new SolidColor();

chercheCouleur.rgb.red=109;

chercheCouleur.rgb.green=225;

chercheCouleur.rgb.blue=147;

selectColorRange(chercheCouleur);

function selectColorRange(scObj)

{

    var desc = new ActionDescriptor();

    desc.putInteger( charIDToTypeID( "Fzns" ), 0 );

    var cDesc = new ActionDescriptor();

    cDesc.putDouble( charIDToTypeID( "Rd  " ), scObj.rgb.red);

    cDesc.putDouble( charIDToTypeID( "Grn " ), scObj.rgb.green);

    cDesc.putDouble( charIDToTypeID( "Bl  " ), scObj.rgb.blue );

    desc.putObject( charIDToTypeID( "Mnm " ), charIDToTypeID( "RGBC" ), cDesc );

    desc.putObject( charIDToTypeID( "Mxm " ), charIDToTypeID( "RGBC" ), cDesc );

    executeAction( charIDToTypeID( "ClrR" ), desc, DialogModes.NO );

}

Thanks in advance.

This topic has been closed for replies.
Correct answer r-bin

In general, it seems that ColorRange processes all your colors in Lab mode, regardless of what mode it was given input colors.

He still converts them to Lab. And it does it on the same algorithm as Eyedropper.

This algorithm (the conversion of RGB to Lab) is different from what happens when executing such code.

var c0 = new SolidColor();

c0.model = ColorModel.LAB;

c0.rgb.red=109;

c0.rgb.green=225;

c0.rgb.blue=147;

var c1 = new SolidColor();

c1.model = ColorModel.RGB;

c1.rgb.red=109;

c1.rgb.green=225;

c1.rgb.blue=147;

alert(c0.lab.l.toFixed(4) + " " + c0.lab.a.toFixed(4) + " " + c0.lab.b.toFixed(4)+ "\n" +

      c1.lab.l.toFixed(4) + " " + c1.lab.a.toFixed(4) + " " + c1.lab.b.toFixed(4))

In addition, it depends on the file's profile and bit depth.

In Lab mode 16 bit, ColorRange with Fzns = 0 does not work at all adequately

For your case, you can upgrade the code like this. At least on your two colors works in RGB8 or RGB16 mode with different profiles.

var chercheCouleur = new SolidColor();

chercheCouleur.model = ColorModel.LAB;

chercheCouleur.rgb.red=109;

chercheCouleur.rgb.green=225;

chercheCouleur.rgb.blue=147;

//chercheCouleur.rgb.red=4;

//chercheCouleur.rgb.green=99;

//chercheCouleur.rgb.blue=138;

selectColorRange(chercheCouleur);

function selectColorRange(scObj)

{

    var desc = new ActionDescriptor();

    desc.putInteger( charIDToTypeID( "Fzns" ), 0 );

    var cDesc = new ActionDescriptor();

    cDesc.putDouble( charIDToTypeID( "Lmnc" ), scObj.lab.l );

    cDesc.putDouble( charIDToTypeID( "A   " ), scObj.lab.a );

    cDesc.putDouble( charIDToTypeID( "B   " ), scObj.lab.b );

    desc.putObject( charIDToTypeID( "Mnm " ), charIDToTypeID( "LbCl" ), cDesc );

    var cDesc = new ActionDescriptor();

    cDesc.putDouble( charIDToTypeID( "Rd  " ), scObj.rgb.red);

    cDesc.putDouble( charIDToTypeID( "Grn " ), scObj.rgb.green);

    cDesc.putDouble( charIDToTypeID( "Bl  " ), scObj.rgb.blue );

    desc.putObject( charIDToTypeID( "Mxm " ), charIDToTypeID( "RGBC" ), cDesc );

    desc.putInteger( stringIDToTypeID( "colorModel" ), 0 );

    executeAction( charIDToTypeID( "ClrR" ), desc, DialogModes.NO );

}

1 reply

Legend
March 28, 2018

This is a bug of Photoshop СС
Read this topic sampled colors in color range is not recorded by scripts

ParveenKaloi
Participating Frequently
March 28, 2018

Thanks for reply,

I'm not talking about Photoshop СС. I'm using Photoshop CS6 13.0 x64. And it is working on most of the colors. Please go through again & check if there can be any solution for it.

Thank You

Legend
March 28, 2018

Excuse me, but now there is no time. It's also like a bug. I'll try to figure it out later.