[AI]回転された配置画像の縮尺を計算するスクリプト

これ、この前詰まってた数学的な問題を解消できたやつです。
元ネタはいつものごとくフォーラムです。
https://forums.adobe.com/thread/2455224
して、コードはこちら

var tg = app.selection[0];
var mx = tg.matrix;
var deg = Math.atan2(mx.mValueB, mx.mValueA) * 180 / Math.PI;
var nm = new Matrix;
nm.mValueA = nm.mValueD = 1;
nm.mValueB = nm.mValueC = 0;
var rtmx = app.concatenateRotationMatrix(nm, deg);
var sc = mx.mValueA / rtmx.mValueA;
alert(sc*100);

選択した画像の縮尺を計算します。(^-^)/

広告

[AI]アフィン変換の活用[AI]

アフィン変換の活用Illustratorはいくつかのオブジェクトがmatrixプロパティを持ちます。そして、appクラスには各種matrix操作メソッドがあり、それを利用することによって色々と出来ることがあります。例えば、

スクリーンショット 2018-02-21 12.31.58

こちらのようにinverseMatrixを利用して回転角・縮尺をリセットするような操作が可能です。もっと単純に処理できるのはテキストオブジェクトでスケール等の情報が全て級数や長平体に移行されるためmatrixが回転角のみとなります。その為matrixの一部の数値からasinを利用して回転角を計算することが可能です。

var m = app.selection[0].matrix;
alert(-Math.asin(m.mValueC)/Math.PI*180);

メソッドが返すのはラジアンですから上の様にdgreeに変換する必要があります。とまあ、こんな感じで上手く使うと非常に便利なアフィン変換のマトリクスですが、なんだかなぁ〜って思っている方に以下のブツをおすすめします。

var $_affine={
var $_affine={
 win:function(){
 var w = new Window ('dialog', "affine matrix", undefined);
 var p1 = w.add('panel',undefined,"a"); p1.size = [100,45];
 var tx1 = p1.add('edittext',undefined,'1',{multiline:false});
 tx1.characters = 5;
 var p2 = w.add('panel',undefined,"b");
 p2.size = [100,45];
 var tx2 = p2.add('edittext',undefined,'0',{multiline:false});
 tx2.characters = 5;
 var p3 = w.add('panel',undefined,"c");
 p3.size = [100,45];
 var tx3 = p3.add('edittext',undefined,'0',{multiline:false});
 tx3.characters = 5;
 var p4 = w.add('panel',undefined,"d");
 p4.size = [100,45];
 var tx4 = p4.add('edittext',undefined,'1',{multiline:false});
 tx4.characters = 5;
 var cl = w.add('button', undefined, 'cancel', {name:'cancel'});
 var bt = w.add('button', undefined , 'apply', {name:'ok'});
 bt.onClick = function (){
 $_affine.applyTransform(tx1.text,tx2.text,tx3.text,tx4.text);
 } w.show();
 },
 applyTransform:function(a,b,c,d){
 var tm = new Matrix();
 tm.mValueA = Number(a);
 tm.mValueB = Number(b);
 tm.mValueC = Number(c);
 tm.mValueD = Number(d);
 tm.mValueTX = 0;
 tm.mValueTY = 0;
 //alert(tm.mValueA+tm.mValueB+tm.mValueC+tm.mValueD);
 app.selection[0].transform(tm,true,true,true,true,1);
 app.redraw();
 }
 }
$_affine.win();

スクリーンショット 2018-02-21 12.40.07
ScriptUIで各パラメータを入力して選択したオブジェクトを回したり拡大したりと試せるようになっています。一度使ってみてください。

IllustratorCC2017のNoUIでのスクリプティング

moluappleのサジェスチョンです。

https://forums.adobe.com/thread/2386561

なんだこりゃ?って事で調べてみるとver.21でaddDocumentNoUIsaveNoUIというメソッドが追加されてましたw

IDのvisibleフラグをfalseにした時と同じような挙動になるのですが…

var prst = new DocumentPreset();
var dc = app.documents.addDocumentNoUI(prst);
var tx = dc.textFrames.add();
for (var i=0;i<10;i++){
   tx.contents += i + "\n";
   }
$.writeln(tx.contents);
var fl = new File("~/Desktop/testNoUI.ai");
dc.saveNoUI(fl);
dc.close();

とりあえずテストコードですが、この例では「saveNoUI」でスクリプトエンジンがクラッシュします。また前述のmoluappleの書き込みでもredrawメソッドでクラッシュすると報告されています。しかしながら、上の例では以下の様に$.writelnで値を正常に取り出すことが出来ています。

nouiconsole

ちょっと、PRで報告してくる〜(^ー^)/

PNGファイルの情報を読み出すツール

データを取り回しているときに単純なファイル情報を取得して利用したくなる場合が多くあります。例えば画像の縦横のピクセル数とかカラーモードとかとか…
もちろんXMPとか参照したりPSにて調べたりというものありなのですが、もっと簡単にできれば便利じゃないかな???
って思いました。で、出来たのがJPGToolとかいうやつです。こちらはJPGファイルの基本的な情報をバイナリ検索して抽出するものでした。ぐぐればすぐに見つかるので見てみるのも良いでしょう。
しかし今回、なんでPNG見れないんだっ?てなって急遽PNGの情報を抜き出すやつを書きました。

続きを読む

workspaceをなんとかするスクリプト

workspaceSwitcherって書いちゃうとまたやってるのかwって思われてしまうのであえてタイトルにしないというのはわたしのささやかな抵抗なのですが、今回のものはInDesign用です。おそらくCS6でも動きますのスクリプトなのですが、思ったよりスイッチングが早かったので前から作っているプラグインバージョンは必要ないかもしれないなって80%程やる気を失っていしまっているのはまた別のおはなしです。いや、苦戦しているのは確かなのですがPrefixIDの問題とか色々なハードルがございましてなかなか一筋縄では行かない状態なのです。で、いっその事ロジックから一新してしまうのもありかなって思ったのでやってみるとそれなりに動作してしまったというわけなのです。現在、テストを兼ねてスタートアップに放り込んでIDを動作させていますが安定しているので一旦このバージョンを放流してお茶を濁しておこうという了見なのです。はい、まあ動くからいいじゃないですかぁw
SDKの方はある程度の事は出来るようになったのですが、中々一人では超えられない壁にぶち当たっている状況です。まあ、デベロッパーフィー払ってサポート受けるのが最短ではありますが、ブロンズでも年間$400以上ですのでパトロンでも見つけないとムリぽwww

続きを読む

Photoshop Custom Actiondescripterをストレージとして扱う

あのenumaratorだとかdescripterとかPhotoshopのスクリプトってなんだか異質なわけですが、これらもうまいこと使いこなせばあらぬ方向に利用できたりします。今回はcustom Actiondescripterを利用したストレージの構築をやってみましょう。
利用するのはApplicationクラスにあるputCustomOptionsgetCustomOptionsメソッドです。わりと単純なのでコードをご覧ください。

続きを読む

OpenCVをExtendscriptで利用するなんとか…

水もぬるみ始め、そろそろお花見の予定を考えないと行けない時期となりました。皆様に於かれましてはご清祥の事とお慶び申し上げますです、はい。
そんなこんななのですが、日曜日の昼下がりはうちの子がピアノを練習してたりするのです。このところメヌエットとかやってて、なまじ知っている曲ということで今このテキスト入力中にも頭の中を回り続けている次第です。しょうがないので他の曲聞いたりしているのですが止めるとまた例の曲が戻ってきて……なんだかこのループは当分続きそうです。今週は違う曲やってたから止まるかなって思ったのですが相変わらずわたしの頭の中はアレがエンドレスでりぴーとしているというw
話は全く関連しませんが、今回お届けするのはおなじみの顔認識なのです。今回はMac版のライブラリを更新します。OpenCVのバージョンは2.4.5です。

続きを読む