#レタッチ・色調補正で忘れてはいけないスポイトツールの設定
が、Photoshopではアクセスし辛いところにあります。
この設定内容、特にサンプル範囲の指定値は、
- ブラシでのOPTION(Alt)+クリックでの色拾い
- ターゲット調整ツール
- カラーサンプラー
などなどの、サンプル範囲を指定する全てのツールで共有しています。
画像の状態によって適宜変更しないとちょっと面倒なんですが、まぁ、面倒くさいところにあるんですね…
これをキーボードショートカットで変更できないかと思っていたら、
『Solved: Setting eyedropper options - Adobe Support Community - 10115167』https://community.adobe.com/t5/photoshop/setting-eyedropper-options/td-p/10115167?page=1&profile.language=en
Adobeフォーラムのr-bin氏がそのものズバリなScriptをアップしていました。
これをお借りして、KeyboardMaestroでちょうどいいキーに割り当てて使ってみましょう。
KMマクロのメインは、AppleScriptで包んだJavaScriptです。包んでるので変数もKMから渡せますね!
(*
This AppleScript uses the script of r-bin. Thanks to r-bin
https://community.adobe.com/t5/photoshop/setting-eyedropper-options/td-p/10115167
r-bin(https://community.adobe.com/t5/user/viewprofilepage/user-id/7619033)
*)
(*
eyeDropperSample(サンプルサイズ) 0:指定/1:3/2:5/5:11/15:31/25:51/50:101
eyeDropperSampleSheet(サンプル対象) 0:全て 1:現在 3:現在以下 6:全て調整なし 8:現在以下調整なし
*)
use Photoshop : application id "com.adobe.photoshop"
tell application "Keyboard Maestro Engine" to set mySampleSize to getvariable "SampleSize" as text
tell Photoshop
do javascript ("var r = new ActionReference();
r.putProperty(stringIDToTypeID(\"property\"), stringIDToTypeID(\"tool\"));
r.putEnumerated(stringIDToTypeID(\"application\"), stringIDToTypeID(\"ordinal\"), stringIDToTypeID(\"targetEnum\"));
var curr_tool = executeActionGet(r).getEnumerationType(stringIDToTypeID(\"tool\"));
var r = new ActionReference();
r.putClass(stringIDToTypeID(\"eyedropperTool\"));
var d = new ActionDescriptor();
d.putReference(stringIDToTypeID(\"null\"), r);
executeAction(stringIDToTypeID(\"select\"), d, DialogModes.NO);
var r = new ActionReference();
r.putProperty(stringIDToTypeID(\"property\"), stringIDToTypeID(\"tool\"));
r.putEnumerated(stringIDToTypeID(\"application\"), stringIDToTypeID(\"ordinal\"), stringIDToTypeID(\"targetEnum\"));
var op = executeActionGet(r).getObjectValue(stringIDToTypeID(\"currentToolOptions\"));
op.putInteger(stringIDToTypeID(\"eyeDropperSample\"), " & mySampleSize & ");
var r = new ActionReference();
r.putClass(stringIDToTypeID(\"eyedropperTool\"));
var d = new ActionDescriptor();
d.putReference( stringIDToTypeID( \"null\" ), r );
d.putObject(stringIDToTypeID(\"to\"), stringIDToTypeID(\"null\"), op);
executeAction(stringIDToTypeID(\"set\"), d, DialogModes.NO);
var r = new ActionReference();
r.putClass(curr_tool);
var d = new ActionDescriptor();
d.putReference(stringIDToTypeID(\"null\"), r);
executeAction(stringIDToTypeID(\"select\"), d, DialogModes.NO);")
end tell
こっちはサンプル対象を変更します(Keyboard Maestroから実行)
use Photoshop : application id "com.adobe.photoshop"
tell application "Keyboard Maestro Engine" to set mySampleTarget to getvariable "SampleTarget" as text
tell Photoshop
do javascript ("
try
{
var r = new ActionReference();
r.putProperty(stringIDToTypeID(\"property\"), stringIDToTypeID(\"tool\"));
r.putEnumerated(stringIDToTypeID(\"application\"), stringIDToTypeID(\"ordinal\"), stringIDToTypeID(\"targetEnum\"));
var ret = executeActionGet(r);
var options = ret.getObjectValue(stringIDToTypeID(\"currentToolOptions\"));
var tool = ret.getEnumerationType(stringIDToTypeID(\"tool\"));
options.putBoolean(charIDToTypeID(\"StmS\"), " & mySampleTarget & ");
options.putBoolean(charIDToTypeID(\"StmB\"), " & mySampleTarget & ");
var r = new ActionReference();
r.putClass(tool);
var d = new ActionDescriptor();
d.putReference(stringIDToTypeID(\"null\"), r);
d.putObject(stringIDToTypeID(\"to\"), stringIDToTypeID(\"null\"), options);
executeAction(stringIDToTypeID(\"set\"), d, DialogModes.NO);
}
catch (e) { /*alert(e)*/ }
")
end tell
option+1〜7で値を渡してサンプル範囲変更、option+0,.で対象レイヤー変更を仕込みます。便利べんり。