パッケージに含める画像に余分なメタ情報や画質を持たせるとパッケージの容量が大きくなってしまうものの、画像を更新する度にいちいち手動で圧縮をかけるのは面倒なので、リリースビルドのときだけ自動的に圧縮されるようにします。
imageOptim-CLIのインストール
画像の圧縮にはimageOptim-CLIを使います。これはImageOptimeやImageAlphaをまとめてCLIで操作するスクリプトです。READMEに従い、ImageOptimと必要であればImageAlphaやJPEGminiをインストールします。
imageOptim-CLI自体はnpmでインストールできます。
$ npm install -g imageoptim-cli
例えばres/img以下をImageAlpha込みで圧縮したい場合次のようになります。
$ imageOptim -a -q -d res/img
各ツールの挙動のを細かく設定することもできます。例えばimageAlphaはデフォルトで--quality=75=100
オプションがついているので、変更したい場合この辺をいじります。
imageOptimBashLib
function run_image_alpha {
if [ "true" == $USE_IMAGE_ALPHA ]; then
if [ "true" == $HAS_IMAGE_ALPHA ]; then
info "Running ImageAlpha..."
find "${TEMP_PATH}/png" -type f -print0 | xargs -n10 -P8 -0 \
$PNGQUANT_PATH --ext=.png --force --speed=1 --quality=75-100 -- # <= ここ
else
fatal "ImageAlpha is not installed (http://pngmini.com)"
fi
fi
}
ビルドスクリプトに組み込む
cocos compile
コマンドでiOSのパッケージを作る手順はざっくりと以下のようになります。
- スクリプトファイル(.luaや.js)のコンパイル
- ビルドして.appを生成
- .appからno_resに指定されているリソースを削除
- .appから.ipaを生成
余分なリソースを削除した後に圧縮をかけるのが良さそうなので、3と4の間でimageOptimを実行します。ビルドスクリプトを次のように編集します。
${cocos_root}/tools/cocos2d-console/plugins/project_compile/project_compile.py
diff --git a/plugins/project_compile/project_compile.py b/plugins/project_compile/project_compile.py
index 3a2eeb4..199515b 100644
--- a/plugins/project_compile/project_compile.py
+++ b/plugins/project_compile/project_compile.py
@@ -535,6 +535,9 @@ class CCPluginCompile(cocos.CCPlugin):
self._remove_res(self._iosapp_path)
if self._mode == 'release':
+ # optimize image
+ self._run_cmd("imageOptim -a -q -d %s/res/img" % self._iosapp_path)
+
# generate the ipa
app_path = os.path.join(output_dir, "%s.app" % app_name)
ipa_path = os.path.join(output_dir, "%s.ipa" % app_name)
cocosコマンドでリリースビルドすれば、画像が圧縮されます。
$ cocos compile -p ios -m release