PhotoshopアクションをJavaScriptに記録

| コメント(2)

Photoshopのスクリプトを調べていたらScriptListenerというのがあり、アクションのログをJavaScriptで書き出してくれるということが分かりました。

●ScriptListener のインストール
Adobe Photoshop CS4/Scripting/Utilities/ScriptingListener.plugin

Adobe Photoshop CS4/Plug-Ins/Automate
にコピーする
Photoshopを再度起動

●ログをとる
ドキュメントを開いた状態でアクション作成し「記録」する。

スクリプトログファイルがデスクトップに保存されます。

保存されたログは下記のようなもの。
クリッピングパスを選択して選択範囲の反転、選択範囲を消去というアクション。
うーん。これならスクリプト書いた方がいいなぁ。

// =======================================================
var idOpn = charIDToTypeID( "Opn " );
    var desc1 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
    desc1.putPath( idnull, new File( "/Users/takeuchig5/Desktop/001103" ) );
executeAction( idOpn, desc1, DialogModes.NO );

// =======================================================
var idslct = charIDToTypeID( "slct" );
    var desc2 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref1 = new ActionReference();
        var idPath = charIDToTypeID( "Path" );
        ref1.putName( idPath, "パス 1" );
    desc2.putReference( idnull, ref1 );
executeAction( idslct, desc2, DialogModes.NO );

// =======================================================
var idsetd = charIDToTypeID( "setd" );
    var desc3 = new ActionDescriptor();
    var idnull = charIDToTypeID( "null" );
        var ref2 = new ActionReference();
        var idChnl = charIDToTypeID( "Chnl" );
        var idfsel = charIDToTypeID( "fsel" );
        ref2.putProperty( idChnl, idfsel );
    desc3.putReference( idnull, ref2 );
    var idT = charIDToTypeID( "T   " );
        var ref3 = new ActionReference();
        var idPath = charIDToTypeID( "Path" );
        var idOrdn = charIDToTypeID( "Ordn" );
        var idTrgt = charIDToTypeID( "Trgt" );
        ref3.putEnumerated( idPath, idOrdn, idTrgt );
    desc3.putReference( idT, ref3 );
    var idVrsn = charIDToTypeID( "Vrsn" );
    desc3.putInteger( idVrsn, 1 );
    var idvectorMaskParams = stringIDToTypeID( "vectorMaskParams" );
    desc3.putBoolean( idvectorMaskParams, true );
executeAction( idsetd, desc3, DialogModes.NO );

// =======================================================
var idInvs = charIDToTypeID( "Invs" );
executeAction( idInvs, undefined, DialogModes.NO );

// =======================================================
var idDlt = charIDToTypeID( "Dlt " );
executeAction( idDlt, undefined, DialogModes.NO );
Comments are nofollow setting

コメント(2)

お初にお目にかかります
ScriptListenerの使用により、パスをクリップボードにコピーしたり、パスアイテム内のポイントを一括選択したり、などを記録できます。このあたりはまっとうにオブジェクトをつっついても無理だったと思うのですが

InDesignでEPS画像のプレビューをコピーした物をPhotoshopドキュメントにペーストするスクリプトを書いたら挙動が怪しくて、ペーストの部分をScriptListenerで記録した物に差し替えたらようやく普通に動作した、などありました。

なるほど。使いようですね。
パスをほかのドキュメントに持っていくようなのはAppleScriptで書いたことがありますが、PhotoshopのJavaScriptは初めて。
アクションのステップごとに
// ============================
で区切られているようですね。

コメントする

エントリー一覧

OpenID対応しています OpenIDについて
Powered by Movable Type 8.0.2
漢字イラストロジック-脳トレ京
FREE ONLINE SUDOKU