概要
検索してもまとまった形では見つからなかったのでメモしておきます。
例えば foo.ai
というファイルの中に board1, board2
というアートボードがあり、それらをサイズ 48x48, 96x96, 192x192 のPNG形式で Desktop/Icons
以下に出力したい場合を考えます。
Desktop
|- Icons
|
|- foo (<== 新規フォルダ作成)
|
|- 48 (<== 新規フォルダ作成)
| |- board1.png
| |- board2.png
|
|- 96 (<== 新規フォルダ作成)
| |- board1.png
| |- board2.png
|
|- 192 (<== 新規フォルダ作成)
|- board1.png
|- board2.png
前提
- 各アートボードの width, height は同じ値とします
変更履歴
- 2018/10/18
- コードセクションの
TrimLast
関数のインデックスがずれている問題を修正
- コードセクションの
コード
好きな名前のテキストファイル(下例では "export_png.jsx") を作成してテキストエディタを以下のように編集します。
export_png.jsx
/// --- 関数定義 (*エラー処理とかは無視) ---
// path で指定された新規フォルダ作成
function CreateFolder(path)
{
var f = Folder(path);
if(!f.exists) { f.create(); }
}
// inStr 末尾から lastStr で指定された文字列を取り除く
function TrimLast(inStr, lastStr)
{
var idx = inStr.lastIndexOf(lastStr);
if(idx > 0)
{
return inStr.substr(0, idx);
}
else
{
return inStr;
}
}
function SavePNG(expFolderPath, doc)
{
app.activeDocument = doc;
opts = new ExportOptionsPNG24();
// アートボード毎に処理しますよというフラグ
opts.artBoardClipping = true;
// その他の出力オプション(お好みで)
opts.matte = false;
opts.transparency = true;
const ORG_SIZE = doc.height;
// 48, 96, 192 出力サイズそれぞれについて処理
var sizes = [48, 96, 192];
for(var j = 0; j < sizes.length; j++)
{
// エクスポートする画像サイズと同じ名前のサブフォルダを作成
var size = sizes[j];
var subFolder = expFolderPath + "/" + size;
CreateFolder(subFolder);
// エクスポートするサイズをオプション設定
opts.horizontalScale = opts.verticalScale = 100 * (size / ORG_SIZE);
// 各アートボードそれぞれについて処理
for (var i = 0; i < doc.artboards.length; i++ )
{
doc.artboards.setActiveArtboardIndex(i);
// '[expFolderPath]/[size]/[fName].png' というPNG画像エクスポート
var fName = doc.artboards[i].name;
var expFile = File(subFolder + '/' + fName);
doc.exportFile ( expFile, ExportType.PNG24, opts );
}
}
}
/// --- 以下メイン処理 ---
// 読み込む ai ファイルのパス指定
var fileRef = File("path/to/foo.ai");
// Illustrator で ai ファイルを開く
var docRef = app.open(fileRef);
// エクスポートフォルダパス指定
var expFolderPath = "~/desktop/Icons" + "/" + TrimLast(docRef.name, ".ai");
// エクスポート先フォルダが存在しないときは新規フォルダを作成
CreateFolder(expFolderPath);
// PNG画像をエクスポート
SavePNG(expFolderPath, docRef);
// 保存せずに ai ファイルを閉じる
docRef.close(SaveOptions.DONOTSAVECHANGES);
スクリプトの使い方
Illustrator を開いて [ファイル] > [スクリプト] > [その他のスクリプト] (or Ctrl+F12キー)
を選ぶとファイル選択ダイアログが出てきます。上記のスクリプトファイルを選択してください。
選択するとスクリプトが直ちに実行されます。