あると便利かもしれないシェルスクリプト:画像の一括縮小

最近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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です