[Terminal] Macでターミナルから複数サイズのアイコン画像を一括変換して作成するシェルスクリプト

2016/04/26

こんにちは。きんくまです。

iOSアプリだとアイコン画像を作るのにIconKitを使っています。
ただ、いまAIRアプリ用にアイコンを作成したくなりました。IconKitはAIR用でないので、なんとかしないといけません。

以前にどこかのブログでmacだとコマンドから画像処理をできると書いてあったことを思い出しました。
調べてみると、こんな感じにsipsコマンドで変更できるようです。
便利ですね。

>> Batch Resize Images Quickly in the OS X Terminal
>> 画像ファイルを操作する(sips)

シェルスクリプト

一括変換するシェルスクリプトを作成しました。

#!/bin/sh

# settings ============

ICON_FILE="sample_icon"
ICON_FORMAT="png"
OUTPUT_ICON_DIR="icons"
OUTPUT_ICON_NAME="icon"
ICON_SIZES=(16 32 48 128)

# ====================

if [ -d "./${OUTPUT_ICON_DIR}" ]
    then
        echo ""
    else
        mkdir "./${OUTPUT_ICON_DIR}"
fi

for size in ${ICON_SIZES[@]}
do
    sips -Z ${size} "${ICON_FILE}.${ICON_FORMAT}" --out "./${OUTPUT_ICON_DIR}/${OUTPUT_ICON_NAME}${size}.${ICON_FORMAT}"
done

設定の説明

元のアイコンファイル名(拡張子前)
ICON_FILE=”sample_icon”

元のアイコン拡張子
ICON_FORMAT=”png”

出力先ディレクトリ名(なければ1つ下の階層に新規作成)
OUTPUT_ICON_DIR=”icons”

出力ファイル名
OUTPUT_ICON_NAME=”icon”

出力サイズ(スペースでサイズを区切る。例の場合は 16px, 32px, 48px, 128px を作成)
ICON_SIZES=(16 32 48 128)

使い方

アイコンファイルとシェルスクリプトを同じ階層におきます。

icon_resize1

ターミナルでその階層に移動した後、実行権を追加

chmod a+x icon_resize.sh

ls -l でファイル名の後ろに * がついていれば準備OK

% ls -l
total 40
-rwxr-xr-x  1 kinkuma  staff    444  4 26 16:55 icon_resize.sh*
-rw-r--r--@ 1 kinkuma  staff  14812  4 26 16:58 sample_icon.png

実行します。 ./ とカレントディレクトリをファイル名の前につけるのをお忘れなく

./icon_resize.sh

こんな感じに出力されます。

icon_resize2

※おまけ
シェルスクリプトのif文とか配列とかよくわからなかったので、ここを真似しました。
>> HowTo: Check If a Directory Exists In a Shell Script
>> Bash Iterate Array Examples

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る