Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

リリースビルド時のみ自動的に画像を圧縮してパッケージを作る(iOS)

More than 5 years have passed since last update.

パッケージに含める画像に余分なメタ情報や画質を持たせるとパッケージの容量が大きくなってしまうものの、画像を更新する度にいちいち手動で圧縮をかけるのは面倒なので、リリースビルドのときだけ自動的に圧縮されるようにします。

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のパッケージを作る手順はざっくりと以下のようになります。

  1. スクリプトファイル(.luaや.js)のコンパイル
  2. ビルドして.appを生成
  3. .appからno_resに指定されているリソースを削除
  4. .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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away