iOS の開発をしていると、Retina ディスプレー用に 2 倍サイズの画像 (@2x.{png,jpg}) を求められる。画像の数が多いと面倒なので、convert コマンドでリサイズする shell script を書いてみた。コードは 2 行。ワンライナーにならなかったのは無様だけど、まあ、そこまで気負うこともないか... と手を抜いた。
以下、カレント・ディレクトリーの中にある画像ファイルをオリジナル・サイズ (@2x 画像) として、半分のサイズの画像を作るコード。
for i in `ls *.png`; do j=${i%.*}; mv $j.png $j@2x.png; done
まずはカレント・ディレクトリーの中にある *.png ファイルを *@2x.png にリネームする。
for i in `ls`; do j=${i%@*}; ext=${i#*.}; convert -resize 50% $i $j.$ext; done
次のコードは、*@2x.png ファイルから convert コマンドを使って半分のサイズの *.png ファイルを作成する。
bash の機能を使っている。
j=${i%@*}
は @ より前のファイル名を取得する
ext=${i#*.}
は . より後のファイル名 (この場合、拡張子に当たる) を取得する
変数 i が foo@2x.png だとすると、変数 j には foo、変数 ext には png の文字列が入る。このコードは、拡張子が png でなくとも (jpeg でも jpg でも gif でも) 問題なく動く。
convert コマンドのオプションには -resize
のみを使っているけど、本職の人に言わせると、もっと別のオプションを追加して画質を上げたりしたいかと思う。そこら辺は別のサイトを見てお好みにどうぞ。