用途に応じてカスタマイズする Photoshop ファイルから多数の塗りつぶしレイヤーから色を抽出するプロセスを自動化するスクリプトを作成しようとしています。問題は、塗りつぶしレイヤーの割り当てられた色を読み取る方法がないように見えることです。
考えられることはすべて試しましたが、何もうまくいきませんでした。これは私がこれまでに得た最も近いものです:
このフォーラムで、スウォッチの値と名前を読み取る方法を見つけました。Scripting Listener プラグインを使用してアクションを記録しましたが、塗りつぶしレイヤーのサムネイルをダブルクリックして [スウォッチに追加] をクリックすると、次のような結果が得られます。
var idMk = charIDToTypeID( "Mk " );
var desc90 = new ActionDescriptor();
var idnull = charIDToTypeID( "null" );
var ref42 = new ActionReference();
var idClrs = charIDToTypeID( "Clrs" );
ref42.putClass( idClrs );
desc90.putReference( idnull, ref42 );
var idUsng = charIDToTypeID( "Usng" );
var desc91 = new ActionDescriptor();
var idNm = charIDToTypeID( "Nm " );
desc91.putString( idNm, """Swatch 3""" );
var idClr = charIDToTypeID( "Clr " );
var desc92 = new ActionDescriptor();
var idRd = charIDToTypeID( "Rd " );
desc92.putDouble( idRd, 229.000397 );
var idGrn = charIDToTypeID( "Grn " );
desc92.putDouble( idGrn, 137.001801 );
var idBl = charIDToTypeID( "Bl " );
desc92.putDouble( idBl, 135.997925 );
var idRGBC = charIDToTypeID( "RGBC" );
desc91.putObject( idClr, idRGBC, desc92 );
var idClrs = charIDToTypeID( "Clrs" );
desc90.putObject( idUsng, idClrs, desc91 );
executeAction( idMk, desc90, DialogModes.NO );
つまり、その時点で選択している特定の値を取得しますが、これをループで実装する方法はありません (少なくとも考えられることはあります)。
また、各塗りつぶしレイヤーの色を前景色にする方法を見つけることができれば、それを読み取ることができることはわかっていますが、どうすればそこにたどり着くことができるでしょうか? スポイトはオプションのようですが、それを機能させる方法が思い浮かびません。
何か案は?