【Macブロガー必見!】画像圧縮後のファイル容量とサイズを指定しまとめて圧縮する方法

Webサイトの読み込み速度はSEO上とても重要な指標となってきました。

自サイトでは画像を軽量化するため最大横700pxとしています。

それでも容量が100Kbを超えるような画像も多くあります。


通常なら50Kbもあれば十分なので縦横の上限700px&容量上限50KBのように容量も指定して圧縮したいと考えました。

Macで容量指定で一括圧縮できるアプリを見つけられなかったのでImageMagickAutomatorを使って右クリックメニューに組み込んでみました。

関連記事
【Mac】指定ファイル容量・指定サイズにリサイズさせる無料アプリをAutomatorで作る

ImageMagickのインストール

ImageMagickはフリーの画像編集コマンド群。

ImageMagick(イメージマジック)は画像を操作したり表示したりするためのソフトウェアスイートである。GIFJPEGJPEG 2000PNGPDFPhoto CDTIFFDPXなど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への自動変換を行います。

元画像.png

変換後.jpg

うまく変換できたようです。


ファイルサイズ:988KB → 46KB
フォーマット:png → jpg
サイズ:815×755 → 700×648

コマンドで変換を行うのは面倒なので右クリックから変換できるように右クリックメニュー組み込みます。


Automator用のスクリプトを作成

AutomatorはMacの操作を自動化できるマクロ。右クリックにシェルスクリプトを埋め込んだりできる。

Automatorを起動

新規作成からクイックアクションを選択

①ライブラリを「シェル」で検索すると「シェルスクリプトを実行」というアクションが表示されるのでワークフローにドラッグ

②ワークフローが受け取る現在の項目を「イメージファイル」

③検索対象を「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

スポンサーリンク

まとめ

いや〜。やればできるもんだ。

変換ソフトも不要になったしシェルスクリプトを編集すれば好きなようにデフォルト設定を変えることもできる。

ぜひご活用ください。

関連記事

コメントを残す

メールアドレスが公開されることはありません。