とあるプロジェクトでiOS/Androidそれぞれに対応したアプリを開発しているのですが、アイコン用にストア申請用の1024x1024の画像をいただきました。
たかだか十数枚なのでペイントツールを使って1枚1枚手作業で縮小しても構わなかったのですが、微調整が入る度に手作業で縮小しないといけないのは労力を考えると心が折れてしまいそうだったので、シェルスクリプトで一括処理させてみました。
スクリプト
Macで標準で用意されているリサイズ用のコマンドsips
を使用します。アスペクト比を保ったまま縮小させるオプションがあったりとなかなか便利なコマンドです。
#!/bin/bash # iOS mkdir -p iOS sips -z 40 40 "${1}" --out "iOS/Icon-40.png" sips -z 80 80 "${1}" --out "iOS/Icon-40@2x.png" sips -z 120 120 "${1}" --out "iOS/Icon-40@3x.png" sips -z 120 120 "${1}" --out "iOS/Icon-60@2x.png" sips -z 180 180 "${1}" --out "iOS/Icon-60@3x.png" sips -z 76 76 "${1}" --out "iOS/Icon-76.png" sips -z 152 152 "${1}" --out "iOS/Icon-76@2x.png" sips -z 29 29 "${1}" --out "iOS/Icon-Small.png" sips -z 58 58 "${1}" --out "iOS/Icon-Small@2x.png" sips -z 87 87 "${1}" --out "iOS/Icon-Small@3x.png" # Android mkdir -p Android/mipmap-hdpi mkdir -p Android/mipmap-ldpi mkdir -p Android/mipmap-mdpi mkdir -p Android/mipmap-xhdpi mkdir -p Android/mipmap-xxhdpi mkdir -p Android/mipmap-xxxhdpi sips -z 72 72 "${1}" --out "Android/mipmap-hdpi/ic_launcher.png" sips -z 36 36 "${1}" --out "Android/mipmap-ldpi/ic_launcher.png" sips -z 48 48 "${1}" --out "Android/mipmap-mdpi/ic_launcher.png" sips -z 96 96 "${1}" --out "Android/mipmap-xhdpi/ic_launcher.png" sips -z 144 144 "${1}" --out "Android/mipmap-xxhdpi/ic_launcher.png" sips -z 192 192 "${1}" --out "Android/mipmap-xxxhdpi/ic_launcher.png"
適当に resize.sh
とか名前をつけて保存しておきます。
使い方
ターミナルで下記のように実行します。
$ resize.sh source.png
どばーと縮小画像が生成されます。これで一通り必要なアイコン画像を生成できるはずです。
間違い・漏れがあれば教えてください。