Skip to main content
francisco_axlot
Participating Frequently
December 28, 2018
Answered

[Script] Adjust Hue/Saturation

  • December 28, 2018
  • 1 reply
  • 3763 views

I've got an image that has its color changed by a clipped mask above it. I am trying to build a script to automate this task, setting different values for the hue, saturation and lightness.

I've managed to create the following script, which creates a Hue/Saturation layer with "Colorize" checkbox enabled, however, I don't know how to initialize the hue, saturation and lightness values.

/////////////

var idMk = charIDToTypeID( "Mk  " );

    var desc43 = new ActionDescriptor();

    var idnull = charIDToTypeID( "null" );

        var ref8 = new ActionReference();

        var idAdjL = charIDToTypeID( "AdjL" );

        ref8.putClass( idAdjL );

    desc43.putReference( idnull, ref8 );

    var idUsng = charIDToTypeID( "Usng" );

        var desc44 = new ActionDescriptor();

        var idType = charIDToTypeID( "Type" );

            var desc45 = new ActionDescriptor();

            var idpresetKind = stringIDToTypeID( "presetKind" );

            var idpresetKindType = stringIDToTypeID( "presetKindType" );

            var idpresetKindDefault = stringIDToTypeID( "presetKindDefault" );

            desc45.putEnumerated( idpresetKind, idpresetKindType, idpresetKindDefault );

           var idClrz = charIDToTypeID( "Clrz" );

            desc45.putBoolean( idClrz, true );

        var idHStr = charIDToTypeID( "HStr" );

        desc44.putObject( idType, idHStr, desc45 );

    var idAdjL = charIDToTypeID( "AdjL" );

    desc43.putObject( idUsng, idAdjL, desc44 );

executeAction( idMk, desc43, DialogModes.NO );

/////////////

Does anyone know how can I set those values? Thanks in advance.

This topic has been closed for replies.
Correct answer Geppetto Luis

I do not know if I understand correctly

maybe you're looking for something similar

// =======================================================

var desc2 = new ActionDescriptor();

var desc3 = new ActionDescriptor();

var desc4 = new ActionDescriptor();

var ref1 = new ActionReference();

ref1.putClass( charIDToTypeID( "AdjL" ));

desc2.putReference( charIDToTypeID( "null" ), ref1 );

desc4.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindDefault" ));

desc4.putBoolean( charIDToTypeID( "Clrz" ), false );

desc3.putObject( charIDToTypeID( "Type" ), charIDToTypeID( "HStr" ), desc4 );

desc2.putObject( charIDToTypeID( "Usng" ), charIDToTypeID( "AdjL" ), desc3 );

executeAction( charIDToTypeID( "Mk  " ), desc2, DialogModes.NO );

// =======================================================

var desc5 = new ActionDescriptor();

var ref2 = new ActionReference();

ref2.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ));

desc5.putReference( charIDToTypeID( "null" ), ref2 );

executeAction( charIDToTypeID( "GrpL" ), desc5, DialogModes.NO );

// =======================================================

var desc6 = new ActionDescriptor();

var desc7 = new ActionDescriptor();

var desc8 = new ActionDescriptor();

var list1 = new ActionList();

var ref3 = new ActionReference();

ref3.putEnumerated( charIDToTypeID( "AdjL" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ));

desc6.putReference( charIDToTypeID( "null" ), ref3 );

desc7.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindCustom" ));

desc7.putBoolean( charIDToTypeID( "Clrz" ), true );

desc8.putEnumerated( charIDToTypeID( "Chnl" ), charIDToTypeID( "Chnl" ), charIDToTypeID( "Cmps" ));

desc8.putInteger( charIDToTypeID( "H   " ), 51 );  /// HUE

desc8.putInteger( charIDToTypeID( "Strt" ), 59 ); /// SATURATION

desc8.putInteger( charIDToTypeID( "Lght" ), 0 ); /// LIGHTNESS

list1.putObject( charIDToTypeID( "Hst2" ), desc8 );

desc7.putList( charIDToTypeID( "Adjs" ), list1 );

desc6.putObject( charIDToTypeID( "T   " ), charIDToTypeID( "HStr" ), desc7 );

executeAction( charIDToTypeID( "setd" ), desc6, DialogModes.NO );

1 reply

Geppetto Luis
Geppetto LuisCorrect answer
Legend
December 28, 2018

I do not know if I understand correctly

maybe you're looking for something similar

// =======================================================

var desc2 = new ActionDescriptor();

var desc3 = new ActionDescriptor();

var desc4 = new ActionDescriptor();

var ref1 = new ActionReference();

ref1.putClass( charIDToTypeID( "AdjL" ));

desc2.putReference( charIDToTypeID( "null" ), ref1 );

desc4.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindDefault" ));

desc4.putBoolean( charIDToTypeID( "Clrz" ), false );

desc3.putObject( charIDToTypeID( "Type" ), charIDToTypeID( "HStr" ), desc4 );

desc2.putObject( charIDToTypeID( "Usng" ), charIDToTypeID( "AdjL" ), desc3 );

executeAction( charIDToTypeID( "Mk  " ), desc2, DialogModes.NO );

// =======================================================

var desc5 = new ActionDescriptor();

var ref2 = new ActionReference();

ref2.putEnumerated( charIDToTypeID( "Lyr " ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ));

desc5.putReference( charIDToTypeID( "null" ), ref2 );

executeAction( charIDToTypeID( "GrpL" ), desc5, DialogModes.NO );

// =======================================================

var desc6 = new ActionDescriptor();

var desc7 = new ActionDescriptor();

var desc8 = new ActionDescriptor();

var list1 = new ActionList();

var ref3 = new ActionReference();

ref3.putEnumerated( charIDToTypeID( "AdjL" ), charIDToTypeID( "Ordn" ), charIDToTypeID( "Trgt" ));

desc6.putReference( charIDToTypeID( "null" ), ref3 );

desc7.putEnumerated( stringIDToTypeID( "presetKind" ), stringIDToTypeID( "presetKindType" ), stringIDToTypeID( "presetKindCustom" ));

desc7.putBoolean( charIDToTypeID( "Clrz" ), true );

desc8.putEnumerated( charIDToTypeID( "Chnl" ), charIDToTypeID( "Chnl" ), charIDToTypeID( "Cmps" ));

desc8.putInteger( charIDToTypeID( "H   " ), 51 );  /// HUE

desc8.putInteger( charIDToTypeID( "Strt" ), 59 ); /// SATURATION

desc8.putInteger( charIDToTypeID( "Lght" ), 0 ); /// LIGHTNESS

list1.putObject( charIDToTypeID( "Hst2" ), desc8 );

desc7.putList( charIDToTypeID( "Adjs" ), list1 );

desc6.putObject( charIDToTypeID( "T   " ), charIDToTypeID( "HStr" ), desc7 );

executeAction( charIDToTypeID( "setd" ), desc6, DialogModes.NO );

RamonMazinga
Participating Frequently
July 23, 2022

This is very usefl. Sorry to post on an old post but I can' find the answer anywhere else.

What if I don't want to create the adjustmnent layer, but only edit its parameters?

Because I have it within a for loop and I don't need it to be re-created ecery time.

Participant
September 7, 2023

@RamonMazinga – how did the code that I posted work for you?


I don't know about Ramon, but it worked great for me.