ないものは作りましょう。

色々なことに挑戦(主にプログラミング)

【Bash】Androidアプリ用のアイコンを生成する

Androidアプリを作る時に、解像度別のアプリアイコンを用意しなくてはなりません。
そこで今回はアプリアイコンのPNG画像を自動で生成するスクリプトを書いてみました。

SVGベクタグラフィックスからアプリアイコン用の複数のサイズのPNG画像を一括で生成します。(mdpi(48x48), hdpi(72x72), xhdpi(96x96), xxhdpi(144x144), Playストア用(512x512))

inkscapeのコマンドを使用しているのでinkscapeがインストールされている必要があります。
Bash用のシェルスクリプトです。

#!/bin/bash

FILE=$1

generate() {
    mkdir generated
    cd generated
    mkdir mipmap-mdpi
    mkdir mipmap-hdpi
    mkdir mipmap-xhdpi
    mkdir mipmap-xxhdpi
    cd ../
    inkscape -z -e "generated/mipmap-mdpi/ic_launcher.png" -w 48 -h 48 $FILE
    inkscape -z -e "generated/mipmap-hdpi/ic_launcher.png" -w 72 -h 72 $FILE
    inkscape -z -e "generated/mipmap-xhdpi/ic_launcher.png" -w 96 -h 96 $FILE
    inkscape -z -e "generated/mipmap-xxhdpi/ic_launcher.png" -w 144 -h 144 $FILE
    inkscape -z -e "generated/ic_512.png" -w 512 -h 512 $FILE
    
    echo -e "\e[1;32mSuccess!\e[m" 1>&2
}

if [ $# -eq 1 ]; then
    if [ ! -e $FILE ]; then
        echo -e "\e[1;31mIt does not exist.\e[m" 1>&2
        exit 1
    fi
    generate
    
else #
    echo -e "\e[1;31mPlease Input FileName of SVG. like ***.svg\e[m" 1>&2
    exit 1
fi

generateAppIcon などと名前を付けてPATHを通したディレクトリに配置すると良いと思います。

SVGファイルのあるディレクトリで

$ generateAppIcon sample.svg

のように実行するとPNG画像が各解像度ごとにフォルダに分けて出力されます。

それでは~