■下処理を最小限にしました!素材名も付けられます

※スクリプト起動する前にイラストレーターデータは保存し、さらに別名保存したデータに対してスクリプトを用いてください(後述)

スクリプトはダウンロードにてお願いいたします。

スクリプトの起動についてはこちらから。

おつかれさまです。GOROLIB DESIGNです。

先日の記事
参考:三階ラボさんのスクリプトでWebデザイン素材をサクッと切り出す方法
のあと、あの憧れの三階ラボさんから「オフィスではもっとゴイスーなスクリプトを使ってます」とのコメントをいただきました。

ぜ、ぜひともヒントを!

と懇願したところ、もはやアートボードにもしないで出力できる(なんならネーミング次第で解像度も複数出力できる)とのこと。

いやいやいや、どうなってんのー(笑)本当にゴイスーです!脱帽。

画像出力コマンドにはオプションがありますが、

OPT.antiAliasing = true; // true : アンチエイリアスON
OPT.transparency = true; // true : 透過
OPT.artBoardClipping = true; // true : アートボードでクリップする


まあ気になるのは"artBoardClipping"ですけど、もしアートボードにしないで画像出力するなら、出力対象「以外」のオブジェクトをオフ表示にするしかない。


レイヤーに分けてレイヤーごとに出力するという方法も見かけましたが、いずれにしても下処理がパネェ感じです(失礼!)。


すみません、生来の面倒くさがり屋なので…。


で、なんだかそんなゴイスーなものはできそうもなく、あとはやっぱりアートボードクリップしかなさそうなので、それで行くことにしました。

プラス、ちょいとカンタン仕様にしてみました。


■選択オブジェクトをpng出力する。以上!


私、面倒くさがりなんです。下処理がイヤ。いきなりいきたいんです。

ここで目を覚ましました。面倒くさがりの本能!「面倒くさかりまさお」です(イミフ)。

もうね、このスクリプトは、選択オブジェクトをpng出力するだけです。

唯一の下処理は、カタマリにしておきたい素材について。カタマリにしておきたい素材はグループ化しておいてくださいね。

しくみは
(1)選択したオブジェクトを
(2)ひとつづつアートボード化しながら
(3)指定フォルダにpng出力する
という構造です。

□オブジェクトを選択します
□スクリプトを実行します
52

□保存先を指定します
17
□ファイルができます。グループ化したところはちゃんとカタマリで出ます。
43
 
□以上です。なおアートボードはめちゃめちゃになります(笑)



■処理後は保管しないでください(笑)


なので最初のアートボードはどっかいっちゃってめちゃめちゃになります(笑)

ひどいっすねぇ。ごめんなさい。制御ができない…。

素材用に別名保存したものをご利用ください。細かく言えば下処理ができた段階で、保存するのがベストかと思います。

ソースも載せときます(後述)。Githubに掲載するのってどうやるんだろ?あっちのほうが正式っぽくていいのかな…。

三階ラボさんには足元にもおよびませんが、サクッと素材を切り出すにはよさそうなので、どうぞご利用ください。

今回研究してぜーんぜんわからなかったのは、三階ラボさんのスクリプトでは矩形オブジェクトとテキストをグループ化したものを処理しているわけですが、その扱いが皆目わからない…orz。

そのグループ化したものから、パスアイテムとテキストアイテムを参照し、さらにテキストデータを抽出しているわけですが、皆目わからない…(2回目)。


しかし心からすげぇなぁ…三階ラボさん。


ではでは出羽の海。


スクリプトはダウンロードにてお願いいたします。

スクリプトの起動についてはこちらから。


以下ソースです。
━━━━━━━━━━
// Gorolib_DirectOutputPNG24.jsx
// Copyright (C) 2016 GOROLIB DESIGN All Rights Reserved.

FDR = Folder.selectDialog();
DOC = activeDocument;
SEL = activeDocument.selection;

if(DOC && FDR && SEL) {
for ( N=0 ; N<SEL.length ; N++ ) {
//アクティブなアートボードを取得
ABD = DOC.artboards[DOC.artboards.getActiveArtboardIndex()];

//選択オブジェクトのサイズを取得
GEO = SEL[N].geometricBounds;

//アートボードのサイズを設定
ABD.artboardRect = GEO;

//PNGファイル出力
OPT = new ExportOptionsPNG24();
OPT.antiAliasing = true;
OPT.transparency = true;
OPT.artBoardClipping = true;
FILE = new File(FDR.fsName + "/" + (( '00' + N ).slice( -3 )) + ".png");
DOC.exportFile(FILE,ExportType.PNG24,OPT);
}
}
━━━━━━━━━━

(追記160401)
ちなみにアートボード変換はgeometricBounds(実際の座標。プレビュー境界オフのイメージです)でやっています。線幅2pxで線の位置を中心にしておられる方は、線幅が半分なくなっちゃいますのでご注意を(こういうオブジェクト)。オブジェクトサイズをタテヨコともに2px増やして、線の位置は内側にしてください。
52

(追記160401)もちろん円形のものでも枠をつくらずにイケます。
11

52


(追記160403)
サブレイヤーを展開してオブジェクトおよびグループに命名すれば、そのファイル名で出力するよう変更しました。名前がない場合は、オブジェクトの重なり順の番号で自動的に命名します。


(追記160409)
kamiseto様のありがた〜いコメントを参考に、Document.imageCaptureの使用に書き換えました。ものすごシンプルになりました!ありがとうございます。