前回作った「右クリックから指定ファイル容量・指定サイズにリサイズするAutomator」
>>>ファイル容量とサイズを指定し画像を一括圧縮する方法
こちらを改良し「フォルダに入れるだけで必要に応じて指定ファイル容量・指定サイズに調整するAutomator」を作りました。
「右クリックから指定条件圧縮」の問題点
画像ファイルが50KB以上の時だけ圧縮したいので、圧縮前に容量を確認する必要があった。
クイックルックに画像容量を表示させたので作業としては楽になったがそれでも面倒。
>>>クイックルックのタイトルバーにファイル容量を表示する
50KB以上のファイルだけ自動で圧縮させたい。
Automatorのフォルダアクションを使う
Automatorのフォルダアクションを使えば「指定したフォルダにファイルを入れる」だけで「シェルスクリプト」を実行できる。
前回作ったシェルスクリプトを改良し、画像が50KB以上あった時だけファイルを「容量圧縮&リサイズ&リネーム」するようにした。
またスクリーンショットの保存先も「指定したフォルダ」にすれば、こちらも自動で圧縮されるようになる。
【重要】
ImageMagickを未導入の方は先にインストールしてください。
>>>ImageMagickの導入はこちらを参考に
Automatorを起動しフォルダアクションを選択する。
ライブラリから「シェル」を検索し「シェルスクリプト」をワークフローにドラッグ。
・デスクトップなどに作ったフォルダ(ここではデスクトップの画像自動圧縮フォルダ)を指定
・入力の引き渡し方法は「引数として」
・下記のbashコマンドを貼り付けて保存(ここでは画像自動リサイズ圧縮)
`open /Users/{ユーザー名}/Desktop/画像自動圧縮`
for filename in "$@"
do
size=`wc -c "$filename" | awk '{print $1}'`
threshold=50000
if [ $size -gt $threshold ] ; then
/usr/local/bin/convert "$filename" \( +clone -alpha opaque -fill white -colorize 100% \) +swap -normalize -auto-level -geometry +0+0 -compose Over -composite -alpha off -strip -resize 700x700\> -define jpeg:extent=50KB -background white -alpha off "$filename"_700_50KB.jpg
rm -f "$filename"
fi
done
【追記】-normalize と -auto-level のオプションを追加しています。自動輝度調整です。
{ユーザー名}はMacのログインユーザー名を指定しれください。
これでこのフォルダに画像ファイルを入れるだけで下記の動作が行われます。
【50KB以上の場合のみ】
・画像自動圧縮フォルダを開く
・縦横最大700PXかつ50KB以下に圧縮
・PNGなどもjpgに変換(透過は白背景に変換)
・ファイル名を{元のファイル名}_700_50KB.jpgに変更
・元のファイルは削除
ただしファイル形式のチェックは行っていないので画像ファイル以外を入れたときはエラーで止まると思います。
ブラウザのダウンロードフォルダなどに使うのならフォーマットチェックが必要になるでしょう。
ImageMagickのidentifyコマンドを使えばできると思います。
スクリーンショットも自動圧縮する
スクリーンショットの保存先を先程の「/Users/{ユーザー名}/Desktop/画像自動圧縮」に指定しておけば自動で圧縮されます。
macOS Mojaveであればcommand+shift+5でスクリーンショットを表示し、オプションから保存先を「画像自動圧縮」フォルダに指定してあげればOK。
スクリーンショットを撮るたびに自動圧縮のシェルスクリプトが実行されます。
前回作った右クリックとの併用でとても便利になりました。
関連記事