見出し画像

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 が必要です。

ここから先は

0字 / 1ファイル
月に10-20本くらいの記事を投稿しています。定期購読されると、更新のお知らせを受け取ったり、マガジン限定記事やサンプルファイルをダウンロードできます。 購読を開始した月に更新された記事から読むことができます(初月無料)。

DTP Transit 定期購読マガジン

¥100 / 月 初月無料

マガジン限定記事やサンプルファイルをダウンロードできます。

定期マガジンを購読されるとサンプルファイルをダウンロードいただけます。 https://note.com/dtp_tranist/m/mebd7eab21ea5