2020/01/28 ドンピシャなJSX公開されてたので、KM用に書き直しました。
カラーピッカーの色を拾う範囲?
ブラシツール使用中にoption(Alt)+クリックすると出るこいつ。
クリックした所の色を拾ってくれる機能なのですが、
「クリックした所」
って曖昧すよね。どの範囲を拾っているのか、そしてその設定はどこにあるのか。
はい、範囲が決められます。で、対象となるレイヤーを選択中のものより下にする、全てのレイヤーを対象にする、など切り替えられます…が、
実はこれかなーり重要な設定項目なのに、ブラシツールではなくスポイトツールに切り替えないと変更できません。
▼ここ。スポイトツールを選択した時のオプションバーです。
ツールリセットすると、ここは「指定したピクセル」及び「すべてのレイヤー」になります。クリックした所の1ピクセルの色を、見えている状態で拾います。
しかしここ、切り替えてやらないといろいろと面倒なことが起きるのです。
スポイト範囲が小さい場合
初期設定のままだと、スポイトしてもうまく色が拾えないことがあります。
「指定したピクセル」の色を忠実に拾っているので、ノイズのカラーを拾ってしまい、色が暴れているのです。
と言うわけでサンプル範囲を大きくしていくと……
▼「51ピクセル四方の平均」に設定すると暴れなくなりました。
じゃ、大きくしておけばいいのかというと、そういう訳でもないんですね。
スポイト範囲が大きい場合
メニュー項目の「〜四方の平均」から想像できるように、「サンプル範囲」というのは矩形です。
ブラシのように大きさを表示してくれる訳でもないので、小さい範囲の色を取ろうとすると………
要らない所の色まで拾って平均してしまいます。つまり……
サンプル範囲は、画像に合わせて最適なものを選ぶ必要がある
のですね。めんどくさー
いちいち、スポイトツールに切り替えてプルダウンメニューから選んで、ブラシに戻る………なんてやってられない。というわけで、
キーボードショートカットで設定するマクロ
作りました。
こちらからDLしてください。
https://d.pr/f/GryCNi
https://d.pr/f/fHs26A
(修正しました2019/02/19)
(再度修正しました2019/03/27 バグ修正)
(書き直しました2020/01/28)
Keybord Maestroマクロで、ブラシツール使用中にサンプル範囲を、
Option+1:指定したピクセル
Option+2:3ピクセル四方の平均
Option+3〜7:5px、11px〜101ピクセル四方の平均
を切り替えられます。また、
Option+ピリオド/コロンで、サンプル対象を現在のレイヤー以下と全てのレイヤーを切り替えます。
Option+0,カンマ、ピリオドで、現在のレイヤー、現在のレイヤー以下、全てのレイヤーを切り替えます。
KM側のキー設定はフルキーボードのテンキーを使っています。テンキーが無い場合は書き換えてください。
ただし、今の構成では数字キーが必須になってます。Apple Script部分に渡すVariableがメニュー項目番号になれば動くので、適当に書き換えてください。
主要な動作部分はApple Scriptで、こんなことしてます。
tell application "Adobe Photoshop CC 2019" to set myOriToolName to do javascript "app.currentTool" tell application "Keyboard Maestro Engine" to set myVar to getvariable "Variable" set myText to {" ピクセル四方の平均", "指定したピクセル"} tell application "System Events" tell process "Photoshop CC" my selectTools("eyedropperTool") repeat with i from 1 to 20 repeat with b in {1, 3, 6} try set myItem to pop up button b of window i set myValue to value of myItem if myValue contains item 1 of myText or myValue contains item 2 of myText then click myItem click menu item (myVar as number) of menu 1 of myItem my selectTools(myOriToolName) return 1 end if end try end repeat end repeat end tell end tell on selectTools(myToolName) tell application "Adobe Photoshop CC 2019" to do javascript "var desc9 = new ActionDescriptor();var ref7 = new ActionReference();ref7.putClass( app.stringIDToTypeID(" & quoted form of myToolName & ") );desc9.putReference( app.charIDToTypeID('null'), ref7 );executeAction( app.charIDToTypeID('slct'), desc9, DialogModes.NO );" end selectTools
(2019/03/21
pop up buttonも1〜4で変動するですよ……)
一応メニュー項目確認するようにしました。これで大丈夫………
いや実はAppleScriptに処理任せるまでは画像検索でクリックとかさせてたんです💦(20190219)
2020/01/28追記
まさにこれ、というJSXを見つけましたので、それを元に全面的に書き替えました。System Eventsで触っていた、PhotoshopUI変更で変わるIDを全部検索するAppleScript部分が無くなって、Keyboard Maestroから実行するためにJSXをAppleScriptでくるんでます。
『解決済み: Setting eyedropper options – Adobe Support Community – 10115167』https://community.adobe.com/t5/photoshop/setting-eyedropper-options/td-p/10115167?page=1
r-bin氏ありがとう! Windowsの方は、リンク先のJSXの指定箇所書き替えて複製し、Photoshopスクリプトフォルダに入れてキーボードショートカット当てる、とか他のキーボードユーティリティーでうまいことやってください(Winわからんのですまぬです
いや……これマジで便利だと思うの……
いやほんと。
ノイズの具合って画像で変わりますし、拾いたい色はピクセル一個の場合もあります。
キーボードショートカットで切り替えてないとちょっと塗るの辛いです。
ぜひ、MacでKeyboard Maestro導入している方……という条件がありますが、使ってみてください!