Asepriteで作成したイラストを素材サイト用に書き出す際、いろいろな場合分けをして書き出しをしたいという場面が出てきました。
例:
・各レイヤー色違いで作成したイラストをそれぞれ別々の画像として書き出したい
・png,gifなど、複数の画像フォーマットで書き出したい
・同じ画像をリサイズして複数枚書き出したい
はじめはAseprite上の「Fire > Export >Export as…」から上記のような場合分け分すべてマウスでポチポチしながら書き出しを行っていたのですが、時間がかかりすぎてしまうためなにかいい方法がないかと探していたところ、AsepriteにはCLI (Command Line Interface)で操作できる機能が備わっているとのことだったので、こちらの機能を試しに利用してみました。
公式のAseprite CLIドキュメント
https://www.aseprite.org/docs/cli/
利用準備
はじめに、asepriteのアプリケーションがインストールされている場所を把握している必要があります。私の環境ではMacのSteam経由でインストールを行っておりますが、Steam版の場合は下記の手順でインストール場所を把握することが可能です。
1.Steamを起動し、ライブラリ内のAsepriteのページに遷移
2.ページ内の歯車マーク(管理) > 「管理」 > 「ローカルファイルを閲覧」を選択します。
3.アプリケーション「Aseprite」(Windows版だと「Aseprite.exe」)が存在しているフォルダが開くため、「Aseprite」の場所をメモする。
※Mac版の場合、「Aseprite」を右クリックしてから「情報を見る」を選択し、「場所」の部分の情報をコピーします。私の環境の場合、「/Users/[USER NAME]/Library/Application Support/Steam/steamapps/common/Aseprite」に保存されていました。
続いてターミナルを開き(windows版の場合はコマンドプロンプト)、上記でメモしたディレクトリへ移動します。
% cd /Users/[USER NAME]/Library/Application\ Support/Steam/steamapps/common/Aseprite
更にそこから
% cd /Aseprite.app/Contents/MacOS
の順で遷移し、最終的に
% pwd
/Users/[USERNAME]/Library/Application Support/Steam/steamapps/common/Aseprite/Aseprite.app/Contents/MacOS
というpathに遷移すると、「aseprite」というファイルが存在しています。この「aseprite」を利用してコマンドを実行することになります。
毎回このファイルを絶対パスで指定する or ディレクトリ移動して実行するのが手間な方は、環境変数に登録してしまうことをおすすめします。
% export PATH=$PATH:/Users/[USERNAME]/Library/Application\ Support/Steam/steamapps/common/Aseprite/Aseprite.app/Contents/MacOS/
上記コマンドを実行することでどのディレクトリからも「asepriteコマンド」を実行することができます。
バージョン情報表示用のコマンドが実行可能か確認してみます。
% aseprite --version
Aseprite 1.3.2-x64
以降の説明では上記設定を行い、パスを通した前提でコマンドを実行します。パスを通す設定を行うことができない場合は、以降のコマンドの先頭の「aseprite」コマンドを絶対パスを使って「/Users/[USERNAME]/Library/Application\ Support/Steam/steamapps/common/Aseprite/Aseprite.app/Contents/MacOS/aseprite」に置き換える等を行ってください
実行方法
◆シンプルな保存
実行例
#操作対象の.asepriteファイルが存在しているディレクトリに移動
% ls
book.aseprite
#「book.aseprite」を「book.png」という名前で書き出して保存
% aseprite -b book.aseprite --save-as book.png
<オプション解説>
-b:asepriteのアプリを立ち上げずに実行させる (つけない場合はアプリが自動で立ち上がる)
–save-as:名前をつけて書き出し
色々と条件を変更して試してみた結果、下記のような特徴がありました。
・デフォルトでは、Aseprite側で表示しているレイヤーすべてを重ねて1枚にした状態での保存となる。
・特に指定しない場合は等倍での書き出しとなる。(32px * 32pxで書いた場合はそのまま32px * 32pxでの書き出し)
・保存ファイル名(上記例だと「book.png」)の拡張子を指定することで、自動的にそのファイルの書き出し形式を指定した拡張子に合わせてくれる。(gifやjpegにしたい場合は「book.gif」「book.jpeg」といった指定をする。)
・複数フレームを作成してアニメーションさせている場合、「ping」や「jpeg」で書き出した場合、特に指定しなければ”ファイル名”+”連番”.pngといった形で書き出してくれる。
上記デフォルトの動作に対して変更を加えたい場合は下記の通りとなります。
◆スケールを変更して保存
実行例
% aseprite -b book.aseprite --scale 10 --save-as book.png
<オプション解説>
–scale ◯:書き出し画像の倍率を変更
・Aseprite GUIの書き出しだと%指定ですが、コマンドでは◯倍指定となるので注意が必要です。上記例だと縦横10倍に拡大して保存。
◆各レイヤーを分けて保存
実行例
% aseprite -b --split-layers book.aseprite --save-as book_{layer}_{frame}.png
<オプション解説>
–split-layers:各レイヤーを分割して保存
・ドキュメントに記載されていた注意点として、この「–split-layers」オプションの後ろに対象となる.asepriteファイルを指定する必要があるとのことでした。
・また、Aseprite側で非表示設定となっているレイヤは書き出し対象とならないため、書き出したい場合はAseprite側でのレイヤ表示設定して保存するまで忘れずに行いましょう。
・保存先のファイル名に{layer}、{frame}を含めることで、保存ファイルの命名規則を指定することができます。「red,blue,yellow,green」レイヤーにそれぞれ4枚ずつフレームを作成している私の環境の場合、上記例では「book_{layer}_{frame}.png」という形で指定しているため、
book_red_1.png
book_red_2.png
book_red_3.png
book_red_4.png
book_blue_1.png
book_blue_1.png ...
という形で書き出されます。
上記でもともとやりたいと考えていたことは満たすことができましたが、Aseprite CLIのドキュメントには他にも色々なオプションが記載されていたため、今後また必要なシーンが出てきた際は使用例とともに紹介できればと思います。