あると便利かもしれないシェルスクリプト:画像の一括縮小
最近AdobeのPhotoshopがアップデートされました。それに伴っていくつか変更されたことがあったのですが、画像アセットの仕様がかなり変更になった模様です。これまではグループに名前をつけて書き出すときに倍率を選ぶことができて、異なるサイズの画像が書き出せたのですが、どうも2015になってできなくなった模様です(単にやり方が変わっただけでそれを分かってないだけなのかもしれませんが…)。ということでこれを機にPhotoshopから切り出すのはワンサイズにしてあとはシェルスクリプトで一括縮小してやろうということでシェルスクリプトを書きました。
大したことはやってません
とりあえず
brew install imagemagick
でImageMagickをインストールしてください。
でもって本体のシェルスクリプトはこれです。
トップディレクトリにこのスクリプトを置いて、なおかつトップディレクトリにresouces/imagesフォルダがあることが前提です。
psdから切り出した画像(最大幅1280px)をresouces/imagesの中に置いておくと(その中にサブフォルダがあっても大丈夫です)、
それらのファイルから1280px、640px、320pxの画像を作ってくれます。
#! /bin/bash
####################################################################################################
#
# resourcesとimagesディレクトリが置かれているディレクトリから実行することを前提にしています。
# ディレクトリ内で実行することでorgディレクトリからコピーしてリサイズしてリネームというのを
# 3つの大きさ(320px, 640px, 1280px)分繰り返す。
#
####################################################################################################
for file_type in jpg png; do
pushd resources/images > /dev/null
for directory_name in `find . -type d`; do
pushd ${directory_name} > /dev/null
for file_name in `find . -type f | grep -e \.${file_type} | grep -v \@3x.${file_type} | grep -v \@2x.${file_type} | grep -v \@1x.${file_type}`; do
file_name=`basename ${file_name}`
file_name=${file_name#*/}
file_name=${file_name%.${file_type}}
echo "----------------------------------------------------------"
echo ""
echo "Resizing ${file_name#*/}.${file_type} at ${directory_name}..."
echo ""
echo "----------------------------------------------------------"
convert -resize 1280x -unsharp 2x1.4+0.5+0 -verbose ${file_name}.${file_type} ${file_name}@3x.${file_type}
convert -resize 640x -unsharp 2x1.4+0.5+0 -verbose ${file_name}.${file_type} ${file_name}@2x.${file_type}
convert -resize 320x -unsharp 2x1.4+0.5+0 -verbose ${file_name}.${file_type} ${file_name}@1x.${file_type}
done
popd > /dev/null
done
popd > /dev/null
done