Webサイトの読み込み速度はSEO上とても重要な指標となってきました。
自サイトでは画像を軽量化するため最大横700pxとしています。
それでも容量が100Kbを超えるような画像も多くあります。
通常なら50Kbもあれば十分なので縦横の上限700px&容量上限50KBのように容量も指定して圧縮したいと考えました。
Macで容量指定で一括圧縮できるアプリを見つけられなかったのでImageMagickとAutomatorを使って右クリックメニューに組み込んでみました。
関連記事
【Mac】指定ファイル容量・指定サイズにリサイズさせる無料アプリをAutomatorで作る
ImageMagickのインストール
ImageMagickはフリーの画像編集コマンド群。
ImageMagick(イメージマジック)は画像を操作したり表示したりするためのソフトウェアスイートである。GIF、JPEG、JPEG 2000、PNG、PDF、Photo CD、TIFF、DPXなど100種類以上の画像ファイルフォーマットに対応している[2]。GPL互換でより制限が緩い独自ライセンスが適用されている[3]。
ImageMagick – Wikipedia
ImageMagickはHomebrewを使えば簡単にインストールできる。
HomebrewはMacのパッケージ管理システムの一種です。導入していないなら先に下記の手順を参考に導入してください。
>>>macOS 用パッケージマネージャー – Homebrew
準備が完了したらターミナルで下記コマンドを実行しImageMagickをインストールします。
brew install imagemagick
エラーが出る場合はよく読んで潰していきます。
ImageMagickのテスト
うまく圧縮できるか下記コマンドで確認してみましょう。
convert [元ファイルのパス] -strip -resize 700x700\> -define jpeg:extent=50KB [変換ファイルのパス]_700_50KB.jpg
-strip
EXIF 情報やコメントを削除する
-resize 700×700
横x縦の最大pxを指定します。
デフォルトでは縦横比をキープして拡大縮小を行いますので、拡大されないように[\>]オプションを付けています。
-define jpeg:extent=50KB
jpegに変換した場合の最大ファイルサイズを指定します。このサイズに近づくように圧縮します。
なお[変換ファイルのパス]の最後を[.jpg]にしているので[元ファイルフォーマット]がpng等でもjpgへの自動変換を行います。
うまく変換できたようです。
ファイルサイズ:988KB → 46KB
フォーマット:png → jpg
サイズ:815×755 → 700×648
コマンドで変換を行うのは面倒なので右クリックから変換できるように右クリックメニュー組み込みます。
Automator用のスクリプトを作成
AutomatorはMacの操作を自動化できるマクロ。右クリックにシェルスクリプトを埋め込んだりできる。
新規作成からクイックアクションを選択
①ライブラリを「シェル」で検索すると「シェルスクリプトを実行」というアクションが表示されるのでワークフローにドラッグ
②ワークフローが受け取る現在の項目を「イメージファイル」
③検索対象を「Finder」
④入力の引き渡し方法を「引数として」
下記シェルスクリプトを貼り付け
for filename in "$@"
do
/usr/local/bin/convert "$filename" -strip -resize 700x700\> -define jpeg:extent=50KB "$filename"_700_50KB.jpg
done
Command+Sなどで保存。
ファイル名は「50KB700リサイズ」とした。
このファイル名が右クリックに表示される。
【追記】
上記だと透過PNGが黒背景になるので白背景のjpgに変換するようにした。
for filename in "$@"
do
/usr/local/bin/convert "$filename" \( +clone -alpha opaque -fill white -colorize 100% \) +swap -geometry +0+0 -compose Over -composite -alpha off -strip -resize 700x700\> -define jpeg:extent=50KB -background white -alpha off "$filename"_700_50KB.jpg
done
右クリック→サービス→変換スクリプト だと面倒なので上の階層に移動する。
というか無駄なメニューが多いので非表示する。
設定→キーボード→ショートカット→サービス
ここから余計なメニューを消すとだいたい出てくる。
不要なメニューのチェックをドンドコ外す
出てきた
これでも出てこないならサービスメニューの階層化をしないように下記コマンドで設定する。
defaults write -g NSServicesMinimumItemCountForContextSubmenu -int 99 && killall Finder
もとに戻すには下記コマンド。。。らしい。やってないので動作不明。
defaults delete -g NSServicesMinimumItemCountForContextSubmenu && killall Finder
スポンサーリンク
まとめ
いや〜。やればできるもんだ。
変換ソフトも不要になったしシェルスクリプトを編集すれば好きなようにデフォルト設定を変えることもできる。
ぜひご活用ください。
関連記事