aceprite)色変換のスクリプトをwindowsバッチで起動する
前回、色変換をスクリプトで実行する方法を紹介しました。
ただ、あの方法だと、変換したいファイルを開き、スクリプトを実行、また次のファイルを開いて実行・・・、と、まだ手作業が多い状況でした。
そこで、windowsのバッチファイルからスクリプトを実行することで、以下のような処理をできるようにしてみます。
①色変換したいacepriteファイルの入ったフォルダを指定
②フォルダ内の全ファイルについて色変換を実行
以下バッチとスクリプトの内容です。
■バッチファイルの内容
@echo off
echo *** フォルダをドロップして下さい。***
set /p dir=""
echo %dir%
cd %dir%
rem --以下スクリプトパス。使用したいスクリプトのパスを指定すること---------
set script_file="C:\Users\userA\Desktop\desktop\tool\aseprite\Aseprite-v1.3.14.4-x64-Portable\Aseprite-v1.3.14.4-x64\scripts\replace_color_test.lua"
rem --選んだフォルダ内のasepriteファイルに対し、スクリプトを実行-----------
setlocal enabledelayedexpansion
for %%f in (*.aseprite) do (
set fname=%%f
set fpath=%dir%\!fname!
echo !fpath!
C:\Users\userA\Desktop\desktop\tool\aseprite\Aseprite-v1.3.14.4-x64-Portable\Aseprite-v1.3.14.4-x64\Aseprite.exe -b --script-param param_fpath=!fpath! --script %script_file%
)
echo 完了しました。
pause
exit■luaスクリプト--バッチからファイルのフルパスを取得
local param_fpath = app.params["param_fpath"]
--acepriteファイルを開く
local sprite = app.open(param_fpath)
--全層の名称を格納したテーブルを作成
local t_layers = {}
for i, layer in ipairs(sprite.layers) do
--app.alert (layer.name)
table.insert(t_layers, layer.name)
end
--全フレームの名称を格納したテーブルを作成
local t_frames = {}
for i, frame in ipairs(sprite.frames) do
--app.alert (frame.frameNumber)
table.insert(t_frames, frame.frameNumber)
end
--テーブル指定のレイヤー・フレーム
--(全レイヤー・フレーム)を選択
app.range.layers = t_layers
app.range.frames = t_frames
--カラーモードをindexedに設定
app.command.ChangePixelFormat{
format="indexed"
}
--色をパレット14⇒26に変更(ui=trueにすれば変更時確認可能)
app.command.ReplaceColor {
ui=false,
channels=FilterChannels.INDEX,
from=Color{index=14},
to=Color{index=26},
tolerance=0
}
--セーブ
app.command.SaveFile {}
--acepriteを閉じる
app.exit()
■結果フォルダ内の全ファイルを変換できます。
詰まったところとして、aceprite.exeの引数の指定順序が重要な点です。
--script-param、の指定が先、--scipt、の指定が後です。
逆にすると、なぜか引き渡せません・・・
これでaceprite関連の処理の効率化が、より捗りそうです。
コメント
コメントを投稿