A modular scripting tool.

Anyone, especially newbies, asking for help with Photoshop Scripting and Photoshop Automation - as opposed to those contributing to discussion about an aspect of Photoshop Scripting

Moderators: Tom, Kukurykus

DaveWortley

A modular scripting tool.

Post by DaveWortley »

Could someone with CS3 please do me a favor?

Create an Action which creates a Curves Adjustment Layer with 3 points added to the curve.

Then another action which creates a Curves Adjustment Layer with points added to the RGB, red, green and blue curves.

Professional AI Audio Generation within Adobe Premiere Pro - Download Free Plugin here

Paul MR

A modular scripting tool.

Post by Paul MR »

These might be easier to read...

Code: Select all

function CurveLayer() {
var desc2 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putClass( charIDToTypeID('AdjL') );
desc2.putReference( charIDToTypeID('null'), ref1 );
var desc3 = new ActionDescriptor();
var desc4 = new ActionDescriptor();
desc4.putEnumerated( stringIDToTypeID('presetKind'), stringIDToTypeID('presetKindType'), stringIDToTypeID('presetKindCustom') );
var list1 = new ActionList();
var desc5 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Cmps') );
desc5.putReference( charIDToTypeID('Chnl'), ref2 );
var list2 = new ActionList();
//////////Must be in Horizontal order
var desc6 = new ActionDescriptor();
desc6.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc6.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc6 );
////////
var desc19 = new ActionDescriptor();
desc19.putDouble( charIDToTypeID('Hrzn'), 25.000000 );
desc19.putDouble( charIDToTypeID('Vrtc'), 45.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc19 );
////////
var desc9 = new ActionDescriptor();
desc9.putDouble( charIDToTypeID('Hrzn'), 125.000000 );
desc9.putDouble( charIDToTypeID('Vrtc'), 126.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc9 );
////////
var desc7 = new ActionDescriptor();
desc7.putDouble( charIDToTypeID('Hrzn'), 162.000000 );
desc7.putDouble( charIDToTypeID('Vrtc'), 165.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc7 );
////////
var desc8 = new ActionDescriptor();
desc8.putDouble( charIDToTypeID('Hrzn'), 205.000000 );
desc8.putDouble( charIDToTypeID('Vrtc'), 226.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc8 );
////////
var desc10 = new ActionDescriptor();
desc10.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc10.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc10 );
////////
desc5.putList( charIDToTypeID('Crv '), list2 );
list1.putObject( charIDToTypeID('CrvA'), desc5 );
desc4.putList( charIDToTypeID('Adjs'), list1 );
desc3.putObject( charIDToTypeID('Type'), charIDToTypeID('Crvs'), desc4 );
desc2.putObject( charIDToTypeID('Usng'), charIDToTypeID('AdjL'), desc3 );
executeAction( charIDToTypeID('Mk  '), desc2, DialogModes.NO );
};



Code: Select all
function currvesRGB() {
var desc2 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putClass( charIDToTypeID('AdjL') );
desc2.putReference( charIDToTypeID('null'), ref1 );
var desc3 = new ActionDescriptor();
var desc4 = new ActionDescriptor();
desc4.putEnumerated( stringIDToTypeID('presetKind'), stringIDToTypeID('presetKindType'), stringIDToTypeID('presetKindCustom') );
var list1 = new ActionList();
//Red
var desc5 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Rd  ') );
desc5.putReference( charIDToTypeID('Chnl'), ref2 );
var list2 = new ActionList();
var desc6 = new ActionDescriptor();
desc6.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc6.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc6 );
var desc7 = new ActionDescriptor();
desc7.putDouble( charIDToTypeID('Hrzn'), 226.000000 );
desc7.putDouble( charIDToTypeID('Vrtc'), 236.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc7 );
var desc8 = new ActionDescriptor();
desc8.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc8.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc8 );
desc5.putList( charIDToTypeID('Crv '), list2 );
list1.putObject( charIDToTypeID('CrvA'), desc5 );
//Green
var desc9 = new ActionDescriptor();
var ref3 = new ActionReference();
ref3.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Grn ') );
desc9.putReference( charIDToTypeID('Chnl'), ref3 );
var list3 = new ActionList();
var desc10 = new ActionDescriptor();
desc10.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc10.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list3.putObject( charIDToTypeID('Pnt '), desc10 );
var desc11 = new ActionDescriptor();
desc11.putDouble( charIDToTypeID('Hrzn'), 169.000000 );
desc11.putDouble( charIDToTypeID('Vrtc'), 159.000000 );
list3.putObject( charIDToTypeID('Pnt '), desc11 );
var desc12 = new ActionDescriptor();
desc12.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc12.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list3.putObject( charIDToTypeID('Pnt '), desc12 );
desc9.putList( charIDToTypeID('Crv '), list3 );
list1.putObject( charIDToTypeID('CrvA'), desc9 );
//Blue
var desc13 = new ActionDescriptor();
var ref4 = new ActionReference();
ref4.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Bl  ') );
desc13.putReference( charIDToTypeID('Chnl'), ref4 );
var list4 = new ActionList();
var desc14 = new ActionDescriptor();
desc14.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc14.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list4.putObject( charIDToTypeID('Pnt '), desc14 );
var desc15 = new ActionDescriptor();
desc15.putDouble( charIDToTypeID('Hrzn'), 85.000000 );
desc15.putDouble( charIDToTypeID('Vrtc'), 70.000000 );
list4.putObject( charIDToTypeID('Pnt '), desc15 );
var desc16 = new ActionDescriptor();
desc16.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc16.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list4.putObject( charIDToTypeID('Pnt '), desc16 );
desc13.putList( charIDToTypeID('Crv '), list4 );
list1.putObject( charIDToTypeID('CrvA'), desc13 );
desc4.putList( charIDToTypeID('Adjs'), list1 );
desc3.putObject( charIDToTypeID('Type'), charIDToTypeID('Crvs'), desc4 );
desc2.putObject( charIDToTypeID('Usng'), charIDToTypeID('AdjL'), desc3 );
executeAction( charIDToTypeID('Mk  '), desc2, DialogModes.NO );
};



DaveWortley

A modular scripting tool.

Post by DaveWortley »

Perfect, thanks Paul!
DaveWortley

A modular scripting tool.

Post by DaveWortley »

I'm still finding these javascript quite difficult to edit, I want to combine those two so I have RGB points added and curve points added for red, green and blue it should be fairly simple but can't figure it out.

Got another example which does both?
Paul MR

A modular scripting tool.

Post by Paul MR »

Hope this helps..

Code: Select all

function CurvesWithRGB() {
var desc2 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putClass( charIDToTypeID('AdjL') );
desc2.putReference( charIDToTypeID('null'), ref1 );
var desc3 = new ActionDescriptor();
var desc4 = new ActionDescriptor();
desc4.putEnumerated( stringIDToTypeID('presetKind'), stringIDToTypeID('presetKindType'), stringIDToTypeID('presetKindCustom') );
var list1 = new ActionList();
var desc5 = new ActionDescriptor();
var ref2 = new ActionReference();
ref2.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Cmps') );
desc5.putReference( charIDToTypeID('Chnl'), ref2 );
var list2 = new ActionList();
var desc6 = new ActionDescriptor();
desc6.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc6.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc6 );
var desc7 = new ActionDescriptor();
desc7.putDouble( charIDToTypeID('Hrzn'), 49.000000 );
desc7.putDouble( charIDToTypeID('Vrtc'), 50.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc7 );
var desc8 = new ActionDescriptor();
desc8.putDouble( charIDToTypeID('Hrzn'), 98.000000 );
desc8.putDouble( charIDToTypeID('Vrtc'), 101.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc8 );
var desc9 = new ActionDescriptor();
desc9.putDouble( charIDToTypeID('Hrzn'), 153.000000 );
desc9.putDouble( charIDToTypeID('Vrtc'), 155.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc9 );
var desc10 = new ActionDescriptor();
desc10.putDouble( charIDToTypeID('Hrzn'), 203.000000 );
desc10.putDouble( charIDToTypeID('Vrtc'), 203.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc10 );
var desc11 = new ActionDescriptor();
desc11.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc11.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list2.putObject( charIDToTypeID('Pnt '), desc11 );
desc5.putList( charIDToTypeID('Crv '), list2 );
list1.putObject( charIDToTypeID('CrvA'), desc5 );
var desc12 = new ActionDescriptor();
var ref3 = new ActionReference();
ref3.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Rd  ') );
desc12.putReference( charIDToTypeID('Chnl'), ref3 );
var list3 = new ActionList();
var desc13 = new ActionDescriptor();
desc13.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc13.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list3.putObject( charIDToTypeID('Pnt '), desc13 );
var desc14 = new ActionDescriptor();
desc14.putDouble( charIDToTypeID('Hrzn'), 61.000000 );
desc14.putDouble( charIDToTypeID('Vrtc'), 63.000000 );
list3.putObject( charIDToTypeID('Pnt '), desc14 );
var desc15 = new ActionDescriptor();
desc15.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc15.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list3.putObject( charIDToTypeID('Pnt '), desc15 );
desc12.putList( charIDToTypeID('Crv '), list3 );
list1.putObject( charIDToTypeID('CrvA'), desc12 );
var desc16 = new ActionDescriptor();
var ref4 = new ActionReference();
ref4.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Grn ') );
desc16.putReference( charIDToTypeID('Chnl'), ref4 );
var list4 = new ActionList();
var desc17 = new ActionDescriptor();
desc17.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc17.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list4.putObject( charIDToTypeID('Pnt '), desc17 );
var desc18 = new ActionDescriptor();
desc18.putDouble( charIDToTypeID('Hrzn'), 119.000000 );
desc18.putDouble( charIDToTypeID('Vrtc'), 114.000000 );
list4.putObject( charIDToTypeID('Pnt '), desc18 );
var desc19 = new ActionDescriptor();
desc19.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc19.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list4.putObject( charIDToTypeID('Pnt '), desc19 );
desc16.putList( charIDToTypeID('Crv '), list4 );
list1.putObject( charIDToTypeID('CrvA'), desc16 );
var desc20 = new ActionDescriptor();
var ref5 = new ActionReference();
ref5.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Bl  ') );
desc20.putReference( charIDToTypeID('Chnl'), ref5 );
var list5 = new ActionList();
var desc21 = new ActionDescriptor();
desc21.putDouble( charIDToTypeID('Hrzn'), 0.000000 );
desc21.putDouble( charIDToTypeID('Vrtc'), 0.000000 );
list5.putObject( charIDToTypeID('Pnt '), desc21 );
var desc22 = new ActionDescriptor();
desc22.putDouble( charIDToTypeID('Hrzn'), 165.000000 );
desc22.putDouble( charIDToTypeID('Vrtc'), 166.000000 );
list5.putObject( charIDToTypeID('Pnt '), desc22 );
var desc23 = new ActionDescriptor();
desc23.putDouble( charIDToTypeID('Hrzn'), 255.000000 );
desc23.putDouble( charIDToTypeID('Vrtc'), 255.000000 );
list5.putObject( charIDToTypeID('Pnt '), desc23 );
desc20.putList( charIDToTypeID('Crv '), list5 );
list1.putObject( charIDToTypeID('CrvA'), desc20 );
desc4.putList( charIDToTypeID('Adjs'), list1 );
desc3.putObject( charIDToTypeID('Type'), charIDToTypeID('Crvs'), desc4 );
desc2.putObject( charIDToTypeID('Usng'), charIDToTypeID('AdjL'), desc3 );
executeAction( charIDToTypeID('Mk  '), desc2, DialogModes.NO );
};



DaveWortley

A modular scripting tool.

Post by DaveWortley »

That's the badger, thanks Paul
DaveWortley

A modular scripting tool.

Post by DaveWortley »

Thanks to Paul, I've been able to write a function which will take arrays of values and will build the curves.

Code: Select allfunction CurvesWithRGB(aRGB_X, aRGB_Y, aRed_X, aRed_Y, aGreen_X, aGreen_Y, aBlue_X, aBlue_Y)
{
    var desc2 = new ActionDescriptor();
    var ref1 = new ActionReference();
    ref1.putClass( charIDToTypeID('AdjL') );
    desc2.putReference( charIDToTypeID('null'), ref1 );
    var desc3 = new ActionDescriptor();
    var desc4 = new ActionDescriptor();
    desc4.putEnumerated( stringIDToTypeID('presetKind'), stringIDToTypeID('presetKindType'), stringIDToTypeID('presetKindCustom') );
    var list1 = new ActionList();
   
    //RGB
    var desc5 = new ActionDescriptor();
    var ref2 = new ActionReference();
    ref2.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Cmps') );
    desc5.putReference( charIDToTypeID('Chnl'), ref2 );
    var list2 = new ActionList();
   
        //Points
        for (var i=0;i<aRGB_X.length;i++)
        {
            var desc6 = new ActionDescriptor();
            desc6.putDouble( charIDToTypeID('Hrzn'), aRGB_X );
            desc6.putDouble( charIDToTypeID('Vrtc'), aRGB_Y );
            list2.putObject( charIDToTypeID('Pnt '), desc6 );
        }
           
    desc5.putList( charIDToTypeID('Crv '), list2 );
    list1.putObject( charIDToTypeID('CrvA'), desc5 );
   
    //Red
    var desc12 = new ActionDescriptor();
    var ref3 = new ActionReference();
    ref3.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Rd  ') );
    desc12.putReference( charIDToTypeID('Chnl'), ref3 );
    var list3 = new ActionList();
   
        //Points
        for (var i=0;i<aRed_X.length;i++)
        {
            var desc13 = new ActionDescriptor();
            desc13.putDouble( charIDToTypeID('Hrzn'), aRed_X );
            desc13.putDouble( charIDToTypeID('Vrtc'), aRed_Y );
            list3.putObject( charIDToTypeID('Pnt '), desc13 );
        }
       
    desc12.putList( charIDToTypeID('Crv '), list3 );
    list1.putObject( charIDToTypeID('CrvA'), desc12 );
   
    //Green
    var desc16 = new ActionDescriptor();
    var ref4 = new ActionReference();
    ref4.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Grn ') );
    desc16.putReference( charIDToTypeID('Chnl'), ref4 );
    var list4 = new ActionList();
   
        //Points
        for (var i=0;i<aGreen_X.length;i++)
        {
            var desc17 = new ActionDescriptor();
            desc17.putDouble( charIDToTypeID('Hrzn'), aGreen_X );
            desc17.putDouble( charIDToTypeID('Vrtc'), aGreen_Y );
            list4.putObject( charIDToTypeID('Pnt '), desc17 );
         }
     
    desc16.putList( charIDToTypeID('Crv '), list4 );
    list1.putObject( charIDToTypeID('CrvA'), desc16 );
   
    //Blue
    var desc20 = new ActionDescriptor();
    var ref5 = new ActionReference();
    ref5.putEnumerated( charIDToTypeID('Chnl'), charIDToTypeID('Chnl'), charIDToTypeID('Bl  ') );
    desc20.putReference( charIDToTypeID('Chnl'), ref5 );
    var list5 = new ActionList();
   
        //Points
        for (var i=0;i<aBlue_X.length;i++)
        {
            var desc21 = new ActionDescriptor();
            desc21.putDouble( charIDToTypeID('Hrzn'), aBlue_X );
            desc21.putDouble( charIDToTypeID('Vrtc'), aBlue_Y );
            list5.putObject( charIDToTypeID('Pnt '), desc21 );
        }

    desc20.putList( charIDToTypeID('Crv '), list5 );
    list1.putObject( charIDToTypeID('CrvA'), desc20 );
   
    //add points
    desc4.putList( charIDToTypeID('Adjs'), list1 );
    desc3.putObject( charIDToTypeID('Type'), charIDToTypeID('Crvs'), desc4 );
    desc2.putObject( charIDToTypeID('Usng'), charIDToTypeID('AdjL'), desc3 );
    executeAction( charIDToTypeID('Mk  '), desc2, DialogModes.NO );
};

aRGB_X  = new Array(0,50,100,255);
aRGB_Y  = new Array(0,50,100,255);

aRed_X  = new Array(0,10,14,26,46,89,255);
aRed_Y  = new Array(0,5,14,33,41,55,255);
aGreen_X  = new Array(0,255);
aGreen_Y  = new Array(0,255);
aBlue_X  = new Array(0,255);
aBlue_Y  = new Array(0,255);

CurvesWithRGB(aRGB_X, aRGB_Y, aRed_X, aRed_Y, aGreen_X, aGreen_Y, aBlue_X, aBlue_Y);