ImageMagickでアスペクト比を維持しながら画像をリサイズする

rubyで作ったResizer.rbをシェルスクリプトに書き直して改善した。

pngファイルで背景が透過だとjpgで黒塗りにされてしまうが、-flatten のオプションをつける事で白塗りになる。

設計

f:id:araemonz:20180729122748j:plain

  1. Resizer.commandと同じディレクトリに変換したいpngまたはjpgファイルを置く(複数可)。
  2. Resizer.commandをダブルクリックし、標準入力でリサイズしたい大きさを入力する。
  3. 縦横がそのサイズに収まるようにアスペクト比を維持しながらjpgに置き換えられる。
  4. 元画像はoriginalフォルダに格納される。

実装

resizer.command

#!/bin/bash
cd `dirname $0`

#-flattenで透過画像を白塗り背景に

read -p "Enter resize limit size: " limitSize

mkdir -p ./original
mkdir -p ./tmp

converter () {
    target_file=$1
    cp $target_file ./original/${target_file}
    name=${target_file%.*}
    echo ${target_file}
    convert $target_file -resize ${limitSize}x${limitSize} -flatten ./tmp/$name.jpg
    rm -f $target_file
}

for file in `\find . -maxdepth 1 -name '*.png' -o -name '*.PNG' -o -name '*.jpg' -o -name '*.JPG'`; do
    converter $file
done

cp ./tmp/* .
rm -Rf ./tmp