Illustratorの「画像トレース」の自動化
200点近くのビットマップ画像をベクター化する機会があり、Illustratorの「画像トレース」の自動化について考えてみました。
「画像トレース」って
「画像トレース」はビットマップ画像をベクター化する機能です。
Illustrator CS2で「ライブトレース」として導入
Illustrator CS6で「画像トレース」に変更。パネル化
ライブペイントと一緒に使うとよいですね。
隙間オプションの設定と合わせて。
なお、Photoshopで次のような“下ごしらえ”を行うと精度が向上します。
レベル補正などを実行し、メリハリを付ける
ゴミやノイズを削除しておく
[画像解像度]で「ディテールの保持」を選択し、解像度を上げる
デフォルトで入っているサンプルスクリプト
Illustratorの[ファイル]メニューの[スクリプト]には、ずばり[画像トレース]という項目があります。
このコマンドは、次のディレクトリにある「画像トレース.jsx」というJavaScriptファイルを参照して実行するというもの。
/Applications/Adobe Illustrator 2023/Presets.localized/ja_JP/スクリプト/画像トレース.jsx
参照先と書き出し先のディレクトリを順番に聞いてくれ、いわゆる「バッチ処理」(指定したフォルダー内のファイルへの一括処理)を実行します。
なお、次のような処理が行われたIllustratorファイルが生成されるだけです。
プリセット:「白黒」が選ばれる
画像トレースされた状態で「拡張」はされていない
つまり、以下のような意図と異なります。
プリセット:プリセットを指定したい
拡張までしたい
拡張までしたい
Ten Aさんのブログ記事で画像トレース関連のJavaScriptが解説されています。
この記事によると、次の1行を加えることで「拡張」まで行えるようになります。
t.tracing.expandTracing();
プリセットの指定
ちょっと面倒なのが、プリセットの指定。
var tracingPresets = app.tracingPresetsList;
t.tracing.tracingOptions.loadFromPreset(tracingPresets[3]);
tracingPresets[3] ように番号で指定するわけですが、これがよくわかりません…
というのも[画像トレース]パネル上部の6つのアイコンと[プリセット]のポップアップは一致せず、どちらを参照するのがよくわからないのです。
自作プリセット
多くの画像に対して一括処理をかけていく際、重要なのがプリセットです。
いずれかの画像に対してパラメーターを追い込み、自作のプリセットとして保存します。
その際、白い領域が透明になるように[ホワイトを無視]オプションをONにしておくのがポイントです。
ChatGPTに聞いてみた
バッチ処理をいったん忘れて、選択している配置画像に対して設定する方法についてChatGPTに聞いてみました。
こちらはプリセットを番号でなく、名前で指定し、さらに拡張まで行ってくれます。
var selectedObjects = app.activeDocument.selection;
if(selectedObjects.length > 0) {
for(var i = 0; i < selectedObjects.length; i++) {
var tracedObject = selectedObjects[i].trace();
tracedObject.tracing.tracingOptions.loadFromPreset("Default");
tracedObject.tracing.expandTracing();
}
}
Keyboard Maestroでは次のようにArgumentsを使って指定するのが吉。
サンプルスクリプトを改良する
サンプルスクリプトの77-80行目を
// Trace the placed item
var t = p.trace();
t.tracing.tracingOptions.loadFromPreset(tracingPresets[3]);
app.redraw();
次のように変更します。
// Trace the placed item
var t = p.trace();
t.tracing.tracingOptions.loadFromPreset("sw"); // プリセットを指定
t.tracing.expandTracing(); // 画像トレースを拡張
app.redraw();
これでバッチ処理をかけながら、拡張まで行えます。
パスの調整(軽量化)
「画像トレース+拡張」を実行後、パスの調整が必要です。
アンカーポイントの数を確認
[ドキュメント情報]パネルを開き、パネルメニューから[オブジェクト]を選択すると、アンカーポイントの数を調べられます。
パスの単純化
パスの軽量化の有効なのが[パスの単純化]コマンドです。
なお、パスの単純化はアクション化できます。
スムーズツール
ツールバーの[スムーズツール]でパス上をさするようにドラッグしてパスをスムーズにします。
パスファインダー(合流)
同じカラーで別のオブジェクトが隣り合う場合のみ合体するのが「合流」です。
Smart Remove Brush Tool
VectorScribeに同梱されている[Smart Remove Brush Tool]を使うと、パスをなぞるだけでアンカーポイントを減らすことができます。
VectorScribeと同じAstute Graphicsから出ているVectorFirstAidの[Super Smart Remove points on paths]を使えば、クリックするだけで完了です。
option + クリックで、オプションを設定するダイアログボックスが表示されます。値を上げるほどにアンカーポイントの数は減りますが、意図しない形状になってしまうことがあります。
「20」ですと、スキマが生じてしまうことがありますので、パスファインダーの[合流]をかけてオブジェクトが隣接している場合には「2」など、かなり数字を落としてつかいましょう。実際のところ、「2」とか「3」くらいが無難です。
画像トレースのワークフローの全容とKeyboard Maestroパレット
画像トレースのワークフローの全容をまとめてみました。
メニューコマンド
[画像トレース]パネル
を実行するのが面倒ですし、さらに軽量化の調整を考えると絶望的です。
そこで、Keyboard Maestroパレットにまとめてみました。
画像トレースを実行したら、[画像トレース]パネルが自動的に開くように設定しています(というか、こうあるべきですよね…)。
バッチ処理後
複数ファイルに対してバッチ処理した後、複数の.aiファイルをまとめたいときがあります。
1つずつ開いてコピー&ペーストするのもありだけど、200ファイルとかあると絶望的。こういうときこそ、スクリプトを使いましょう。
DIMENSHOP 技術部さんのスクリプト、Illustrator 2023でも使えました!(感謝)
まとめ
多くのビットマップ画像をベクター化し、1ファイルにするには、次のようなワークフローを取ります。
ダウンロード
したたか企画さん謹製のKeyboard Maestroプラグイン MaestroPack が必要です。
ここから先は
DTP Transit 定期購読マガジン
マガジン限定記事やサンプルファイルをダウンロードできます。
定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5