こんにちは、生焼けです。
実は(?)、イラストACにイラストを投稿しているのですが、JPEGとPNGとバージョンを落としたバージョンのAIファイルを書き出さないといけないんですよね。
めんどくさいので、一気にスクリプトで済ましちゃおうってことで、いろんなサイトやリファレンスを参考に作ってみました。
どんなふうに動くか
アクティブになっているAIファイルのパスと名前を取得し、同じフォルダに「投稿用ファイル名.拡張子」で保存されます。(ex. 卵.ai→投稿用卵.png になる)
PNGとJPEGは解像度72ppi、AIファイルはバージョンCSで保存されます。(変更可)
アートボード上で何も置いていない場所はJPEGは白、PNGは透明になります。
PNGとJPEGのアンチエイリアスはON(true)になっています。お好みでfalseに変更してください。
アンチエイリアスをオフ(false)にしてもオフになっていない感じがするので、完全にアンチエイリアスをなしにしたい場合は注意です。
使う時の注意点
- 上書き保存されずに今開いているドキュメントが閉じてしまうので、修正などした場合は、スクリプトを動かす前に別名保存or上書き保存などをしてください。
- PNGとJPEGは72ppiのアートボードのサイズで書き出すようになっているので、アートボードサイズを書き出したいサイズにしてから使ってください(推奨1600px×1200px)
- イラレはバージョンCS(Illustrator11)で書き出すようになっています。違うバージョンで保存したい場合はこちらを参考に番号を変更してください。
使い方
コードをコピーして、メモ帳などに貼り付け、”.jsx”で保存してください。
Adobeシリーズの入ったフォルダを探し、Adobe Illustrator 2020\Presets\ja_JP\スクリプトのフォルダに移動させます。(Illustrator 2020の場合)
イラレを(再)起動すると ファイル⇒スクリプト から使えるようになります。
スクリプトの使い方についての解説はこちら
スクリプト
//by生焼け(https://namayakegadget.com/)
//アートボードは画像を書き出すサイズにしておいてください。
//不具合などがあった時のために1回目は別名保存などしてからお使いください。
//ご使用は自己責任でお願いします。
//現在のドキュメントを自動で上書き保存してから書き出したい場合は下の"//"を消してください。
//app.activeDocument.save();
fRef =app.activeDocument;
//現在のドキュメントの名前を取得
var myName = fRef.name;
//現在のドキュメントのパスを取得
var myPath=fRef.path;
//PNGのパスと名前を設定
var newName = myName.replace(/.ai/g,".png");
var pngPath = myPath+"/投稿用"+newName;
//AIファイルのパスと名前を設定
var newName2 = myName.replace(/.ai/g,".ai");
var aiPath = myPath+"/投稿用"+newName2;
//JPEGのパスと名前を設定
var newName3 = myName.replace(/.ai/g,".jpg");
var jpegPath = myPath+"/投稿用"+newName3;
//PNG用にアートボードサイズを取得
var abIndex = app.activeDocument.artboards.getActiveArtboardIndex();
var rect = app.activeDocument.artboards[abIndex].artboardRect;
//JPEG保存設定
jpegOpt = new ExportOptionsJPEG();
//クオリティ設定
jpegOpt.qualitySetting = 100;
//アンチエイリアス設定
jpegOpt.antiAliasing = true;
//アートボードサイズで書き出し
jpegOpt.artBoardClipping = true;
saveFile = new File(jpegPath);
activeDocument.exportFile(saveFile, ExportType.JPEG, jpegOpt);
//PNG保存設定
var pngOpt = new ImageCaptureOptions();
//アンチエイリアス設定
pngOpt.antiAliasing = true;
//透過設定
pngOpt.transparency = true;
//解像度設定
pngOpt.resolution = 72;
saveFile = new File(pngPath);
activeDocument.imageCapture(saveFile, rect, pngOpt);
//イラレ保存設定
var fileObj2 = new File(aiPath);
aiOpt = new IllustratorSaveOptions();
saveFile2 = new File(aiPath);
//イラレのバージョン指定 ILLUSTRATOR11=CS
aiOpt.compatibility = Compatibility.ILLUSTRATOR11;
activeDocument.saveAs(saveFile2, aiOpt);
おまけ
何度も試して絶対に不具合が無さそう&修正してからいちいち書き出す前に上書き保存するのめんどくさい方用に自動上書き機能があります。
使ってみて本当に不具合が無さそうなら、
//現在のドキュメントを自動で上書き保存してから書き出したい場合は下の"//"を消してください。
//app.activeDocument.save();
の//を消して
app.activeDocument.save();
にしてください。
注意事項
スクリプト全般の注意点
- WindowsのIllustrator2020で動作確認済みです。
- このスクリプトはプロのプログラマーではない、生焼けのやつが作ったスクリプトです。そのことを念頭に置いて、自己責任でお使いください。
- 不具合があった時の場合に備えて、まずAIファイルを別名保存などをしてからお使いください。
- 無断で転載・販売することを固く禁じます。サイトなどでご紹介いただける場合はリンクをお貼りください。
- 改変して再配布などは大丈夫ですが、できればリンクなどして頂けると嬉しいです。
参考サイト
Illustrator CS自動化作戦 with JavaScript
Adobe CS6 バージョンJavaScript ファレンス
https://www.adobe.com/devnet/illustrator/scripting.html