LoginSignup
3
2

Photoshopのオーバーレイマスクカラーを3〜6種トグルするJavaScript

Last updated at Posted at 2018-06-11

クイックマスクや、レイヤーマスクをオーバーレイ表示したときのオーバーレイカラーを好きなように切り替えます。
実行するたびに、HSBのHに+60〜120して色を変えます。

▼画像に合わせて適宜変えてやるとオーバーレイ(=選択範囲・マスク)が見やすくなります。
246557315122.jpg

ChangeMaskColor.jsx
/*
<javascriptresource>
<name>マスクカラー変更</name>
<category>YPresets</category>
</javascriptresource>
*/

var myRegKey ="myMaskColor"; //実行内容を記録させるキー名

//カラーと不透明度設定
var myDefHSBS = 50; //彩度(〜100)
var myDefHSBB = 100; //輝度(〜100)
var myDefOpacity = 70; //マスクの不透明度(〜100)
var myHSBAngle = 60; //HSBのHに足す数値。120でRGB、60でCMYをプラス

//キーが無い初回起動時作成
try{
    var customActionDescriptor = app.getCustomOptions(myRegKey);
    var myColor = customActionDescriptor.getString(1001);
    }catch(e){
    var myColor = myPutString (0)
    }

//前回実行した記録に基づいてカラー設定
var myColor=Number(myColor)+myHSBAngle;
if(myColor>=360){myColor=0};
myPutString (myColor);

//実行部分
try{
executeChangeColor(myColor);
}catch(e){}

//関数:実行した色合いを記録
function myPutString(myH){
    var desc = new ActionDescriptor();
    desc.putString(1001,myH);
    app.putCustomOptions(myRegKey, desc, true);
    return myH;
    }

//関数:マスクカラー変更
function executeChangeColor(myHSBsH){
var idsetd = charIDToTypeID( 'setd' );
    var desc12 = new ActionDescriptor();
    var idnull = charIDToTypeID( 'null' );
        var ref3 = new ActionReference();
        var idChnl = charIDToTypeID( 'Chnl' );
        var idOrdn = charIDToTypeID( 'Ordn' );
        var idTrgt = charIDToTypeID( 'Trgt' );
        ref3.putEnumerated( idChnl, idOrdn, idTrgt );
    desc12.putReference( idnull, ref3 );
    var idT = charIDToTypeID( 'T   ' );
        var desc13 = new ActionDescriptor();
        var idClr = charIDToTypeID( 'Clr ' );
            var desc14 = new ActionDescriptor();
            var idH = charIDToTypeID( 'H   ' );
            var idAng = charIDToTypeID( '#Ang' );
            desc14.putUnitDouble( idH, idAng, myHSBsH );
            var idStrt = charIDToTypeID( 'Strt' );
            desc14.putDouble( idStrt, myDefHSBS );
            var idBrgh = charIDToTypeID( 'Brgh' );
            desc14.putDouble( idBrgh, myDefHSBB );
            var idHSBC = charIDToTypeID( 'HSBC' );
        desc13.putObject( idClr, idHSBC, desc14 );
        
       //不透明度を自分で変えたい場合はこのブロックを削除する
            var idopacity = charIDToTypeID( "Opct" );
            var idpercentUnit = charIDToTypeID( "#Prc" );
        desc13.putUnitDouble( idopacity, idpercentUnit, myDefOpacity );
        //ここまで不透明度変更ブロック
        
    var idChnl = charIDToTypeID( 'Chnl' );
    desc12.putObject( idT, idChnl, desc13 );
executeAction( idsetd, desc12, DialogModes.NO );
}
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2