Pages

2014-10-08

*.png から *@2x.png を convert コマンドを使って作成する shell script

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 のみを使っているけど、本職の人に言わせると、もっと別のオプションを追加して画質を上げたりしたいかと思う。そこら辺は別のサイトを見てお好みにどうぞ。

No comments:

Post a Comment