Copy link to clipboard
Copied
I want to remove single color in Set Gray Point in curves ! In this script only add curves layer
// =======================================================
var desc6 = new ActionDescriptor();
var desc7 = new ActionDescriptor();
var desc8 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putClass( charIDToTypeID( "AdjL" ));
desc6.putReference( charIDToTypeID( "null" ), ref2 );
desc8.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindDefault" ));
desc7.putObject( charIDToTypeID( "Type" ), charIDToTypeID( "Crvs" ), desc8 );
desc6.putObject( charIDToTypeID( "Usng" ), charIDToTypeID( "AdjL" ), desc7 );
executeAction( charIDToTypeID( "Mk " ), desc6, DialogModes.NO );
// =======================================================
var desc10 = new ActionDescriptor();
var desc11 = new ActionDescriptor();
var desc12 = new ActionDescriptor();
var desc13 = new ActionDescriptor();
var desc9 = new ActionDescriptor();
var list1 = new ActionList();
var list2 = new ActionList();
var ref3 = new ActionReference();
var ref4 = new ActionReference();
ref3.putEnumerated( charIDToTypeID( "AdjL" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ));
desc9.putReference( charIDToTypeID( "null" ), ref3 );
desc10.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindCustom" ));
ref4.putEnumerated( charIDToTypeID( "Chnl" ), charIDToTypeID( "Chnl" ), charIDToTypeID( "Cyn " ));
desc11.putReference( charIDToTypeID( "Chnl" ), ref4 );
desc12.putDouble( charIDToTypeID( "Hrzn" ), 0.000000 );
desc12.putDouble( charIDToTypeID( "Vrtc" ), 0.000000 );
list2.putObject( charIDToTypeID( "Pnt " ), desc12 );
desc13.putDouble( charIDToTypeID( "Hrzn" ), 229.000000 );
desc13.putDouble( charIDToTypeID( "Vrtc" ), 229.000000 );
list2.putObject( charIDToTypeID( "Pnt " ), desc13 );
desc11.putList( charIDToTypeID( "Crv " ), list2 );
list1.putObject( charIDToTypeID( "CrvA" ), desc11 );
desc10.putList( charIDToTypeID( "Adjs" ), list1 );
desc9.putObject( charIDToTypeID( "T " ), charIDToTypeID( "Crvs" ), desc10 );
executeAction( charIDToTypeID( "setd" ), desc9, DialogModes.NO );
var c = new SolidColor()
get_average_color(c);
var r = c.rgb.red;
var g = c.rgb.green;
var b = c.rgb.blue;
add_curves(undefined, [[0,0],[r,128],[255,255]], [[0,0],[g,128],[255,255]], [[0,0],[b,128],[255,255]]);
function add_curves(c, r, g, b, k, use_grp, name, mode)
{
try {
var d = new ActionDescriptor();
var list = new ActionList();
function set_chnl(name, m)
Copy link to clipboard
Copied
I want to remove single color in Set Gray Point in curves !
Could you explain what you mean by that?
Posting screenshots might save you some typing.
Copy link to clipboard
Copied
Step :- 1
Step :- 2
I am using Gray Tool in Curve , To Remove any single color, So I want to automatic in scripts
Copy link to clipboard
Copied
Automatic what?
Where is the gray point supposed to be set? A fixed pixel position, a Color Sampler, …?
Copy link to clipboard
Copied
I want to set automatically gray point whicever color ?
Copy link to clipboard
Copied
Please try to actually explain what you are trying to achieve.
Are all the images just one solid color area each? What good would applying Curves (Layers) to those be?
Copy link to clipboard
Copied
First Image Check It, I want apply Gray point of Eyedropper tool by Curves. To Adjustment the Single Color.
Step1:- Open Image
Step2:- Avarage Color
Step3:- Open Curves
Stpe4:- Aplly Gray Point of Eyedroper tool by Curves
These four step I want to automstically in scripts
Copy link to clipboard
Copied
Try Image->Adjustments->Match Color - tick Neutralize.
Copy link to clipboard
Copied
Yes @r-bin That is perfect But I want Curve Layer Using Gray Tools, Is that possible to scripts !
Copy link to clipboard
Copied
Copy link to clipboard
Copied
Please write the code
Copy link to clipboard
Copied
Just Write 2Step Code:-
1- Add Curves
2- Gray Point in Eyedroper tools by Curves
Copy link to clipboard
Copied
Add.
Moreover, it is not clear whether you want to turn the average color into (128,128,128) or just remove saturation from it. Curves can be curves, linear or charcoal. The question is ambiguous, because the final goals in real images are not clear.
Copy link to clipboard
Copied
Yes That is final goals, Please write the code :-
Add the Curve Layer in below scripts---
Can you set a Gray Point By Curves:-
var desc6 = new ActionDescriptor();
var desc7 = new ActionDescriptor();
var desc8 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putClass( charIDToTypeID( "AdjL" ));
desc6.putReference( charIDToTypeID( "null" ), ref2 );
desc8.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindDefault" ));
desc7.putObject( charIDToTypeID( "Type" ), charIDToTypeID( "Crvs" ), desc8 );
desc6.putObject( charIDToTypeID( "Usng" ), charIDToTypeID( "AdjL" ), desc7 );
executeAction( charIDToTypeID( "Mk " ), desc6, DialogModes.NO );
// =======================================================
var desc10 = new ActionDescriptor();
var desc11 = new ActionDescriptor();
var desc12 = new ActionDescriptor();
var desc13 = new ActionDescriptor();
var desc9 = new ActionDescriptor();
var list1 = new ActionList();
var list2 = new ActionList();
var ref3 = new ActionReference();
var ref4 = new ActionReference();
ref3.putEnumerated( charIDToTypeID( "AdjL" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ));
desc9.putReference( charIDToTypeID( "null" ), ref3 );
desc10.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindCustom" ));
ref4.putEnumerated( charIDToTypeID( "Chnl" ), charIDToTypeID( "Chnl" ), charIDToTypeID( "Cyn " ));
desc11.putReference( charIDToTypeID( "Chnl" ), ref4 );
desc12.putDouble( charIDToTypeID( "Hrzn" ), 0.000000 );
desc12.putDouble( charIDToTypeID( "Vrtc" ), 0.000000 );
list2.putObject( charIDToTypeID( "Pnt " ), desc12 );
desc13.putDouble( charIDToTypeID( "Hrzn" ), 229.000000 );
desc13.putDouble( charIDToTypeID( "Vrtc" ), 229.000000 );
list2.putObject( charIDToTypeID( "Pnt " ), desc13 );
desc11.putList( charIDToTypeID( "Crv " ), list2 );
list1.putObject( charIDToTypeID( "CrvA" ), desc11 );
desc10.putList( charIDToTypeID( "Adjs" ), list1 );
desc9.putObject( charIDToTypeID( "T " ), charIDToTypeID( "Crvs" ), desc10 );
executeAction( charIDToTypeID( "setd" ), desc9, DialogModes.NO );
Copy link to clipboard
Copied
var c = new SolidColor()
get_average_color(c);
var r = c.rgb.red;
var g = c.rgb.green;
var b = c.rgb.blue;
add_curves(undefined, [[0,0],[r,128],[255,255]], [[0,0],[g,128],[255,255]], [[0,0],[b,128],[255,255]]);
function add_curves(c, r, g, b, k, use_grp, name, mode)
{
try {
var d = new ActionDescriptor();
var list = new ActionList();
function set_chnl(name, m)
{
if (m == undefined || m == null) return;
var d = new ActionDescriptor();
var r = new ActionReference();
r.putEnumerated(stringIDToTypeID("channel"), stringIDToTypeID("channel"), stringIDToTypeID(name));
d.putReference(stringIDToTypeID("channel"), r);
var lst = new ActionList();
for (var i = 0; i < m.length; i++)
{
if (m[i] == undefined) continue;
var d1 = new ActionDescriptor();
d1.putDouble(stringIDToTypeID("horizontal"), m[i][0]);
d1.putDouble(stringIDToTypeID("vertical"), m[i][1]);
lst.putObject(stringIDToTypeID("point"), d1);
}
d.putList(stringIDToTypeID("curve"), lst);
list.putObject(stringIDToTypeID("curvesAdjustment"), d);
}
if (app.activeDocument.mode == DocumentMode.RGB)
{
set_chnl("composite", c);
set_chnl("red", r);
set_chnl("green", g);
set_chnl("blue", b);
}
else if (app.activeDocument.mode == DocumentMode.LAB)
{
set_chnl("lightness", r);
set_chnl("a", g);
set_chnl("b", b);
}
else if (app.activeDocument.mode == DocumentMode.CMYK)
{
set_chnl("composite", c);
set_chnl("cyan", r);
set_chnl("magenta", g);
set_chnl("yellow", b);
set_chnl("black", k);
}
else { return false; }
d.putList(stringIDToTypeID("adjustment"), list);
return add_adjustment_layer("curves", d, name, use_grp, mode);
}
catch (e) { return false; }
}
////////////////////////////////////////////////////////////////////////////////////////////
function add_adjustment_layer(type, data, name, use_grp, mode_str, op)
{
try {
if (typeof(type) == "string") type = (type.length==4)?charIDToTypeID(type):stringIDToTypeID(type);
var d = new ActionDescriptor();
var r = new ActionReference();
r.putClass(stringIDToTypeID("adjustmentLayer"));
d.putReference(stringIDToTypeID("null"), r);
var d1 = new ActionDescriptor();
if (name) d1.putString(stringIDToTypeID("name"), name);
if (use_grp) d1.putBoolean(stringIDToTypeID("group"), true);
if (mode_str != undefined)
{
var mode = mode_str;
if (typeof(mode_str) == "string") mode = (mode_str.length==4)?charIDToTypeID(mode_str):stringIDToTypeID(mode_str);
d1.putEnumerated(stringIDToTypeID("mode"), stringIDToTypeID("blendMode"), mode);
}
if (op != undefined) d1.putUnitDouble(stringIDToTypeID("opacity"), stringIDToTypeID("percentUnit"), op);
if (data == null || data == undefined) data = new ActionDescriptor();
d1.putObject(stringIDToTypeID("type"), type, data);
d.putObject(stringIDToTypeID("using"), stringIDToTypeID("adjustmentLayer"), d1);
executeAction(stringIDToTypeID("make"), d, DialogModes.NO);
return true;
}
catch (e) { return false; }
}
Copy link to clipboard
Copied
Thanks @r-bin I will try
Copy link to clipboard
Copied
Why this answer was marked as correct if it's not a solution to the problem?
Copy link to clipboard
Copied
You look at it wrong way. It's like 2 different people listen to different music, and the one that likes Jazz, cannot understand the other prefers Hip Hop. Or going deeper true street hip hop and luxury's or else Smooth Jazz against Classic Jazz. Similary how can you want to be white when I am happy beeing black 😄 It is funny you do not do something the way I do, really?