【Photoshop JSX】色相・彩度レイヤーを追加してHSV値を設定するスクリプト


はじめに

色相・彩度レイヤーを追加してHSV値を設定するスクリプトの作り方がわからなくて数時間苦しんだので備忘録として残しておきます。

Photoshopのバージョンは以下の通りです
2015.5.1 20160722.r.156 2016/07/22:23:00:00 CL 1083377 x64
Windows 10 64ビット

色相・彩度レイヤーを追加

ScriptListnerを使って調べました。

/**
 *  選択しているレイヤーに色相・彩度レイヤーを追加する
 */
function addHueSatLayer(){
  var idMk = charIDToTypeID( "Mk  " );
      var desc99 = new ActionDescriptor();
      var idnull = charIDToTypeID( "null" );
          var ref39 = new ActionReference();
          var idAdjL = charIDToTypeID( "AdjL" );
          ref39.putClass( idAdjL );
      desc99.putReference( idnull, ref39 );
      var idUsng = charIDToTypeID( "Usng" );
          var desc100 = new ActionDescriptor();
          var idClr = charIDToTypeID( "Clr " );
          var idClr = charIDToTypeID( "Clr " );
          var idOrng = charIDToTypeID( "Orng" );
          desc100.putEnumerated( idClr, idClr, idOrng );
          var idType = charIDToTypeID( "Type" );
              var desc101 = new ActionDescriptor();
              var idpresetKind = stringIDToTypeID( "presetKind" );
              var idpresetKindType = stringIDToTypeID( "presetKindType" );
              var idpresetKindDefault = stringIDToTypeID( "presetKindDefault" );
              desc101.putEnumerated( idpresetKind, idpresetKindType, idpresetKindDefault );
              var idClrz = charIDToTypeID( "Clrz" );
              desc101.putBoolean( idClrz, false );
          var idHStr = charIDToTypeID( "HStr" );
          desc100.putObject( idType, idHStr, desc101 );
      var idAdjL = charIDToTypeID( "AdjL" );
      desc99.putObject( idUsng, idAdjL, desc100 );
  executeAction( idMk, desc99, DialogModes.NO );
}

色相・彩度レイヤーのHSV値を設定

下記URLを参考にしました。
https://www.ps-scripts.com/viewtopic.php?f=66&t=8612

/**
 *  選択している色相・彩度レイヤーのHSV値を設定
 *  hue   : 色相
 *  sat   : 彩度
 *  light : 明度
 */
function changeHueSat(hue, sat, light){
  var idsetd = charIDToTypeID( "setd" );
      var desc72 = new ActionDescriptor();
      var idnull = charIDToTypeID( "null" );
          var ref62 = new ActionReference();
          var idAdjL = charIDToTypeID( "AdjL" );
          var idOrdn = charIDToTypeID( "Ordn" );
          var idTrgt = charIDToTypeID( "Trgt" );
          ref62.putEnumerated( idAdjL, idOrdn, idTrgt );
      desc72.putReference( idnull, ref62 );
      var idT = charIDToTypeID( "T   " );
          var desc73 = new ActionDescriptor();
          var idClrz = charIDToTypeID( "Clrz" );
          desc73.putBoolean( idClrz, true );
          var idAdjs = charIDToTypeID( "Adjs" );
              var list53 = new ActionList();
                  var desc74 = new ActionDescriptor();
                  var idChnl = charIDToTypeID( "Chnl" );
                  var idChnl = charIDToTypeID( "Chnl" );
                  var idCmps = charIDToTypeID( "Cmps" );
                  desc74.putEnumerated( idChnl, idChnl, idCmps );
                  var idH = charIDToTypeID( "H   " );
                  desc74.putInteger( idH, hue );
                  var idStrt = charIDToTypeID( "Strt" );
                  desc74.putInteger( idStrt, sat );
                  var idLght = charIDToTypeID( "Lght" );
                  desc74.putInteger( idLght, light );
              var idHsttwo = charIDToTypeID( "Hst2" );
              list53.putObject( idHsttwo, desc74 );
          desc73.putList( idAdjs, list53 );
      var idHStr = charIDToTypeID( "HStr" );
      desc72.putObject( idT, idHStr, desc73 );
  executeAction( idsetd, desc72, DialogModes.NO );
}