スポンサーサイト

Tags :
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PhotoshopCS2での操作を記録してJavaScriptで書き出す

こんなのが付属していたとは知りませんでした。PhotoshopCS2での操作を記録してJavaScriptで書き出すプラグイン。

『ScriptingListener.plugin』

Mac版のPhotoshopCS2では『Adobe Photoshop CS2/スクリプティングガイド/ユーティリティ』フォルダ内にあるので、これをプラグインフォルダに入れて起動すれば、デスクトップにファイル『ScriptingListenerJS.log』が作成され、操作した内容がどんどん記録されていきます。

こんな感じ。
// =======================================================
var id1878 = charIDToTypeID( "slct" );
    var desc387 = new ActionDescriptor();
    var id1879 = charIDToTypeID( "null" );
        var ref236 = new ActionReference();
        var id1880 = charIDToTypeID( "HstS" );
        var id1881 = charIDToTypeID( "Ordn" );
        var id1882 = charIDToTypeID( "Nxt " );
        ref236.putEnumerated( id1880, id1881, id1882 );
    desc387.putReference( id1879, ref236 );
executeAction( id1878, desc387, DialogModes.NO );

// =======================================================
var id1883 = charIDToTypeID( "slct" );
    var desc388 = new ActionDescriptor();
    var id1884 = charIDToTypeID( "null" );
        var ref237 = new ActionReference();
        var id1885 = charIDToTypeID( "HstS" );
        var id1886 = charIDToTypeID( "Ordn" );
        var id1887 = charIDToTypeID( "Prvs" );
        ref237.putEnumerated( id1885, id1886, id1887 );
    desc388.putReference( id1884, ref237 );
executeAction( id1883, desc388, DialogModes.NO );

// =======================================================

『シャープネス』や『ぼかし』なんかの定番フィルタはJavaScriptで記述できるメソッドが用意されてますが、『スケッチ』等に含まれるフィルタ類にはどう記述すればいいのか解らない物もあるので、その部分をScriptingListenerプラグインで書き出してスクリプトに組み込めば解決します。


試しに、以前デイリーポータルZでやってたネタっぽいのをJavaScriptでやってみました。画像をちょっと品質の悪いビデオキャプチャ風に加工します。

使用例。(手頃な画像が無かった…文字等はあらかじめ入れときます)


この程度ならわざわざスクリプト書かなくてもアクションで記録すれば良いんですが。これに任意の文字を入力出来て、グラデーションかける部分もJavaScriptで作れば面白いかもしれません。

『.jsx』ファイルとしてテキストを保存し、『ファイル→スクリプト→参照』から読み込むと実行されます。
#target photoshop
var originalUnit = preferences.rulerUnits ;
var docRef = activeDocument;

// 定規の単位をピクセルに
preferences.rulerUnits = Units.PIXELS;

//カラーモードをRGBに
docRef.changeMode(ChangeMode.RGB);

//描画色を黒、背景色を白に
app.foregroundColor.rgb.red = 0;
app.foregroundColor.rgb.green = 0;
app.foregroundColor.rgb.blue = 0;

app.backgroundColor.rgb.red = 255;
app.backgroundColor.rgb.green = 255;
app.backgroundColor.rgb.blue = 255;

//画像サイズを一旦幅1300pxにリサイズ
//(なんとなく経験則)
var wTmp = 1300;
var w = docRef.width;
var h = docRef.height;
//alert(w+","+h);
var eSize = wTmp/w;
//alert(eSize);
docRef.resizeImage(wTmp,h*eSize);

//画像を統合
docRef.flatten();

////レイヤを複製
var layObj = docRef.artLayers;
//layObj[layObj.length-1].opacity = 100;//背景に不透明度を設定するとレイヤに変わる
layObj[layObj.length-1].duplicate();
layObj[0].name = "フィルタ処理レイヤ";
layObj[0].blendMode = BlendMode.LUMINOSITY;

//フィルタ処理
//この部分はScriptingListenerJSで記録した物を使用
// =======================================================
//レイヤ『フィルタ処理レイヤ』をアクティブに
var id150 = charIDToTypeID( "slct" );
    var desc39 = new ActionDescriptor();
    var id151 = charIDToTypeID( "null" );
        var ref30 = new ActionReference();
        var id152 = charIDToTypeID( "Lyr " );
        ref30.putName( id152, "フィルタ処理レイヤ" );
    desc39.putReference( id151, ref30 );
    var id153 = charIDToTypeID( "MkVs" );
    desc39.putBoolean( id153, false );
executeAction( id150, desc39, DialogModes.NO );
// =======================================================
//フィルタ『ハーフトンパターン』を適用
var id154 = charIDToTypeID( "HlfS" );
    var desc40 = new ActionDescriptor();
    var id155 = charIDToTypeID( "GEfk" );
    var id156 = charIDToTypeID( "GEft" );
    var id157 = charIDToTypeID( "HlfS" );
    desc40.putEnumerated( id155, id156, id157 );
    var id158 = charIDToTypeID( "HlSz" );
    desc40.putInteger( id158, 1 );
    var id159 = charIDToTypeID( "Cntr" );
    desc40.putInteger( id159, 0 );
    var id160 = charIDToTypeID( "ScrT" );
    var id161 = charIDToTypeID( "ScrT" );
    var id162 = charIDToTypeID( "ScrL" );
    desc40.putEnumerated( id160, id161, id162 );
executeAction( id154, desc40, DialogModes.NO );
// =======================================================

//画像サイズを幅640pxにリサイズ
docRef.resizeImage(640,activeDocument.height*640/wTmp);
//ぼかし(強)
layObj[0].applyBlurMore () ;
//アンシャープマスクを適用
layObj[0].applyUnSharpMask(300,1.5,0);

// 定規の単位設定を元に戻す
app.preferences.rulerUnits = originalUnit;
関連記事
スポンサーサイト

コメント

非公開コメント

Profile
choco
Author : choco

印刷・製版の現場を経て、広告制作会社でPhotoshopを使ったビジュアル制作を担当。

→現在は車載機器開発ベンダにて、組み込み3Dデータ作成やUIデザインなどを行っています。

Categories
Favorites


Search
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。