Posted at

画像変換用バッチ/ツールについて

More than 3 years have passed since last update.

AndroidやiOS等のネイティブアプリなどで使用する画像をETC形式/PVRTC形式に変換する

バッチやツールを作成について考えてみる。


【共通】


  • 変換時は元ファイル名+拡張子(.prk/.pvr)

  • etc1toolとtexturetoolを使用

  • 変換時に出来れば各々のフォルダへmoveさせたい


【バッチ】


  • 階層ごとにバッチを置いて上位階層は下位階層のバッチを実行する

  • 同一階層に変換対象がいる場合は変換をかける

処理の流れ

1. バッチ処理開始

2. 下位階層の確認

3. 下位階層がある場合、バッチ有無を確認

4. 下位階層にバッチがある場合、バッチ処理開始

5. 下位階層のバッチ処理終了

6. 下位階層が存在する分だけ4と5を繰り返す

7. 全ての下位階層のバッチ処理が終了

8. 同一階層に変換対象(.png)がある場合、変換処理開始

9. 変換処理終了

10. 変換対象が存在するだけ8と9を繰り返す

11. 全ての変換対象の処理終了

12. バッチ処理終了


【ツール】


  • 変換対象を指定出来る(ファイル単位やフォルダ全体、リソース全体など)

  • 変換内容を指定出来る(ETC1だけ、PVRTCだけ、ETC1+PVRTCなど)

処理の流れ

1. ツール起動

2. 変換対象の指定(全体/フォルダ単位/ファイル単位) ※1

3. 変換内容の指定(ETC1+PVRTC/ETC1/PVRTC) ※2

4. 指定した変換対象、変換内容を元に変換処理開始

5. 変換処理終了

※1 デフォルトは 全体

※2 デフォルトは ETC1+PVRTC


【変換処理】

例:hoge.pngをそれぞれETC1、PVRTCに変換


  • Android

$ etc1tool hoge.png --encode


  • iOS

$ texturetool -e PVRTC --bits-per-pixel-4 -o hoge.pvr -f hoge.png


【懸念点】


  • Windows/Macの両方で使用できる形にする手段

  • 上位階層内に存在するファイルは変換が必要かどうか

  • 新規か既存か、既存なら更新されているかされていないかを変換条件に含ませる必要がある
    (変換の必要のないデータを変換する時間の無駄)

上記を踏まえた上でバッチ/ツールを作成する必要がある。

とても面倒くさい。

とりあえず実際のバッチ、ツールを作る流れもメモしながら作業を進めていこうと。