「自分でPhotoshopのスクリプトを書かなくても、勝手にスクリプトが出来てくれれば良いのに」
そのような思いを実現してくれそうなPhotoshopのプラグインがあります。
それもアドビシステムズが無料で用意してくれています。
それが ScriptingListener プラグイン
何が出来るのかを要約すると
Photoshopで操作した事を、ログファイルで出力してくれる
そのような機能です。
それだけなのですが、大事な部分はその出力されたログはJavaScript とVBScriptのスクリプト言語で記述されている事。
つまりその書かれているスクリプトを使えば、一からスクリプトを書かなくてもコピー・ペーストするだけで、Photoshopを操作できてしまいます。
そんなアドビシステムズが用意しているScriptingListener プラグインを紹介したいと思います。
|
ScriptingListenerをインストール
Photoshopを操作してScriptingListenerからログを出力
ScriptingListenerから出力されたログでPhotoshopを操作する
おわりに
ScriptingListenerをインストール
ScriptingListener プラグインをインストールします。
PhotoshopCSの頃まではPhotoshopをインストールしたら一緒にこのプラグインも入っていましたが、PhotoshopCCではダウンロードしないと入ってないみたいなのでダウンロードします。
アドビシステムズの公式ページからダウンロード出来ます。
https://helpx.adobe.com/jp/photoshop/kb/downloadable-plugins-and-content.html
|
ScriptingListener プラグインの項目にMacOS版 Windows版の両方があるので環境に合わせてどちらかをダウンロードします。
Windows版をダウンロードしました。
ダウンロードしたZipファイルを解凍します。
解答すると32bit版と64bit版のフォルダがありました。
64bit版のScripting_Win64 をを開きます。
フォルダが3個ありました。
Scripting Utilities のフォルダを開きます。
ScriptListener.8liがありました。これでスクリプトのログを出力してくれます。
一応ほかのフォルダも見ておきましょう。
Sample Scriptsを開きます。
[ApplleScript] [JavaScript] [VBScript]
Photoshopに対応した3種類のスクリプトのサンプルが入ってます。
JavaScriptのサンプルだけでも大量のスクリプトが入ってます。
ファイル名を見ただけでも興味深くて、勉強になりそう。
このサンプルを目的に ScriptListener をダウンロードしても良いと思います。
Photoshopを操作してScriptListenerからログを出力
それではScriptListener.8liを使って、ログを出力しましょう。
まずはじめに、PhotoShopが開いていたら終了します。
終了したら ScriptListener.8li が入っていたフォルダ Scripting Utilities ごと
C:\Program Files\Adobe\Adobe Photoshop 2020\Plug-ins
の下に置きます
これで準備完了です。
ココからPhotoshopを操作してScriptListener.8liからログを出力します。
Photoshopを起動します。
Photoshopが開いたら、
新規ファイルを開きます。
画像を赤く塗りつぶします。
フィルター > 描画 > 雲模様1 から雲模様1のフィルターをかけます
ファイルを閉じます。
Photoshopを終了します。
デスクトップに
2つのログファイルが出来てます。
一つはJavaScript もう一つはVBScript で記述されてます。
C:\Program Files\Adobe\Adobe Photoshop 2020\Plug-ins に
Scripting Utilitiesフォルダを置いたままだと、ずっとログが出力されつづけるので他のフォルダに移しておきましょう。
ScriptListenerから出力されたログでPhotoshopを操作する
JavaScriptで出力されたログファイル ScriptingListenerJS.log をテキストエディタで開きます。
var idMk = charIDToTypeID( “Mk ” );
と書かれているところが新規ファイル作成ですコピーします。
var idFl = charIDToTypeID( “Fl ” );
と書かれているところが塗りつぶしですコピーします。
var idClds = charIDToTypeID( “Clds” );
と書かれているところがフィルターの雲模様1ですコピーします。
var idCls = charIDToTypeID( “Cls ” );
と書かれているところが「ファイルを閉じる」ですが今回はコピーしません。
該当範囲をコピーしてスクリプトにペーストします。
コピー・ペースト以外に他に何も書きません。
js_log_test.jsx で保存しました。
C:\Program Files\Adobe\Adobe Photoshop 2020\Presets\Scripts
に保存します。
var idMk = charIDToTypeID( "Mk " );
var desc9 = new ActionDescriptor();
var idNw = charIDToTypeID( "Nw " );
var desc10 = new ActionDescriptor();
var idartboard = stringIDToTypeID( "artboard" );
desc10.putBoolean( idartboard, false );
var idautoPromoteBackgroundLayer = stringIDToTypeID( "autoPromoteBackgroundLayer" );
desc10.putBoolean( idautoPromoteBackgroundLayer, false );
var idMd = charIDToTypeID( "Md " );
var idRGBM = charIDToTypeID( "RGBM" );
desc10.putClass( idMd, idRGBM );
var idWdth = charIDToTypeID( "Wdth" );
var idRlt = charIDToTypeID( "#Rlt" );
desc10.putUnitDouble( idWdth, idRlt, 320.000000 );
var idHght = charIDToTypeID( "Hght" );
var idRlt = charIDToTypeID( "#Rlt" );
desc10.putUnitDouble( idHght, idRlt, 239.999985 );
var idRslt = charIDToTypeID( "Rslt" );
var idRsl = charIDToTypeID( "#Rsl" );
desc10.putUnitDouble( idRslt, idRsl, 72.000000 );
var idpixelScaleFactor = stringIDToTypeID( "pixelScaleFactor" );
desc10.putDouble( idpixelScaleFactor, 1.000000 );
var idFl = charIDToTypeID( "Fl " );
var idFl = charIDToTypeID( "Fl " );
var idWht = charIDToTypeID( "Wht " );
desc10.putEnumerated( idFl, idFl, idWht );
var idDpth = charIDToTypeID( "Dpth" );
desc10.putInteger( idDpth, 8 );
var idprofile = stringIDToTypeID( "profile" );
desc10.putString( idprofile, """sRGB IEC61966-2.1""" );
var idGdes = charIDToTypeID( "Gdes" );
var list1 = new ActionList();
desc10.putList( idGdes, list1 );
var idDcmn = charIDToTypeID( "Dcmn" );
desc9.putObject( idNw, idDcmn, desc10 );
var idDocI = charIDToTypeID( "DocI" );
desc9.putInteger( idDocI, 385 );
executeAction( idMk, desc9, DialogModes.NO );
// =======================================================
var idFl = charIDToTypeID( "Fl " );
var desc15 = new ActionDescriptor();
var idUsng = charIDToTypeID( "Usng" );
var idFlCn = charIDToTypeID( "FlCn" );
var idFrgC = charIDToTypeID( "FrgC" );
desc15.putEnumerated( idUsng, idFlCn, idFrgC );
var idOpct = charIDToTypeID( "Opct" );
var idPrc = charIDToTypeID( "#Prc" );
desc15.putUnitDouble( idOpct, idPrc, 100.000000 );
var idMd = charIDToTypeID( "Md " );
var idBlnM = charIDToTypeID( "BlnM" );
var idNrml = charIDToTypeID( "Nrml" );
desc15.putEnumerated( idMd, idBlnM, idNrml );
executeAction( idFl, desc15, DialogModes.NO );
// =======================================================
var idClds = charIDToTypeID( "Clds" );
var desc20 = new ActionDescriptor();
executeAction( idClds, desc20, DialogModes.NO );
それでは実行してみましょう。
Photoshopを起動します。
ファイル > スクリプト から js_log_test を選択
画像を赤く塗りつぶす
雲模様1のフィルター
先程のログファイルを出力した時と同じ操作をしました。
これで出力されたログをコピー・ペーストすれば、Photoshopを動かせる事が確認できました。
|
おわりに
Photoshopはスクリプトでいろいろな事が出来ますが、Photoshop固有のコマンドがわからないとjavaScript や VBScript などのスクリプトを理解できても動かすことは出来ません。
Photoshopにプラグインを入れて標準機能にはない特殊なフィルターを使ったり、特殊な専用ファイル形式で保存したりそのような場合は、スクリプトのコマンドが分からないので、スクリプトを何も書けなくなってしまいます。
そんな時に今回紹介した ScriptListener でログを出力してスクリプト内にコピー・ペーストすれば、コマンドが分らなくてもスクリプトを書けてしまいます。
PhotoShopのスクリプトを書いてみようと思われたら、ScriptListener をダウンロードすることをオススメします。
|
Adobeのプラチナパートナーに認定されているデジタルハリウッドのオンラインCGスクール「デジハリONLINE」が提供する「Adobeマスター講座」。
基礎動画教材とAdobe creative cloudの一年版ライセンスがセットになった、コスパ最強のパッケージプランです。
学習ノルマは一切ありません。AdobeCCだけを目的に契約してもOK!
>> デジハリONLINE「Adobeマスター講座」
|
|
BTOパソコンの草分け的ブランドFRONTIER(フロンティア) 3DCG/動画編集/ゲーム用途に合わせてCPUやGPUなどパーツを自由に選べてコスパにもこだわる方にオススメ。 |
|
|
|
|
|