MacOSXにはsipsというコマンドがすでに組み込まれているのでこれを利用します
例:デスクトップ上のprocessというフォルダ内にあるJPEG画像を、縦640pix横960pixにリサイズして上書きします
#!/bin/bash cd /Users/psychic-wave.com/Desktop/process sips -z 640x960 *.jpg
2行目は「cd 」(最後に半角スペース)とタイプした後、processフォルダをmi上に直接ドラッグ&ドロップしています
従ってこれ以降、2行目の記述は各自の環境で異なりますので注意してください
作業フォルダ名は適当で構いませんが、半角スペースや記号を入れたりすると後々苦労が絶えませんよ…「_」(半角アンダーバー)あたりが無難ですね
実行するとこのようになります(ここでは4枚のJPEG画像)
圧縮率を指定する場合です
#!/bin/bash cd /Users/psychic-wave.com/Desktop/process sips -z 640x960 -s formatOptions best *.jpg
best以外はlow/normal/high/数字(%)が使用可
上書きだとループ文が要らないので、コマンドライン一発でも余裕ですね
上書きではなくファイル名を変えて保存する(ファイル名に”_s”を付加)場合はループ文が必要になります
#!/bin/bash cd /Users/psychic-wave.com/Desktop/process for file in *.jpg do filen=${file%.*} sips -z 640x960 ${file} --out ${filen}_s.jpg done
などのように記述すれば良いです
同時に品質をコントロールする場合は
#!/bin/bash cd /Users/psychic-wave.com/Desktop/process for file in *.jpg do filen=${file%.*} sips -z 640x960 -s formatoptions 100 ${file} --out ${filen}_s.jpg done
ですね
さらに処理済みファイルだけを別フォルダに移動することもできます
#!/bin/bash cd /Users/psychic-wave.com/Desktop/process for file in *.jpg do filen=${file%.*} sips -z 640x960 -s formatoptions 100 ${file} --out ${filen}_s.jpg done mkdir resized mv *_s.jpg resized
「resized」というフォルダを作成して、リサイズ後のファイルのみ移動します
ここまで来ると夢がひろがりんぐですね!o(*^▽^*)o
最初はタイプミスで苦労する(特に6行目とか)と思いますが、上手く動けばすぐに応用が効くかと思います
縦画像はスクリプトを書き換えれば良いのですが、自動判定して云々するには縦横の辺の長さを取得して分岐文の記述が必要になります
それは次のImageMagick編にて
シェルスクリプトで画像処理(3)ImageMagick編につづく
DLのたびに通知が出てすごく邪魔だったんで助かりました。