MacでpngquantとJpegoptimを使い、コンテキストメニューから画像圧縮→通知する

MacでpngquantとJpegoptimを使い、コンテキストメニューから画像圧縮→通知する

2017年11月04日

MacでpngquantJpegoptimを使い、コンテキストメニュー(右クリックメニュー)から画像圧縮する方法をご紹介します。
どのファイルを圧縮したかを通知として受け取れます。
macOS High Sierraにて動作確認しています。

オンラインサービスTinyPNGの画像圧縮が賢くて良い感じで気に入っていますが、いちいちウェブサービスにアクセスするのが面倒です。

Mac GUIで同様のことをする場合はImageOptimが優秀ですが(ImageOptimのPNG圧縮にはpngquantも採用されています)、pngquantとJpegoptimの場合はコマンドラインから使えるのも良いな、と思いました。

Jpegoptimを使用する場合は、ターゲットキロバイトなどのオプションもその都度柔軟に設定できるようなので、FutureShopなどアップロードする画像サイズの上限が設定されている場合の一括圧縮にも便利だと思いました。
複数のメニュー項目として、お好みのオプションをそれぞれ指定した上で登録することも可能です。

pngquantとJpegoptimをインストールする

Homebrewを使ってインストールします。
Homebrewのインストール方法はこちらをご参照ください)

pngquantをインストールするには、ターミナルで下記のコマンドを打ちます。

[bash]
brew install pngquant
[/bash]

jpegoptimをインストールするには、ターミナルで下記のコマンドを打ちます。
[bash]
brew install jpegoptim
[/bash]

画像圧縮をサービスメニューに登録する

画像圧縮をサービスメニューに登録する

Automatorを起動し、「サービス」を新規作成します。

「シェルスクリプトを実行」を選び、
下記の内容で、サービスメニューを保存します。
保存時のファイル名が、「サービス」でのメニュー項目名になります。

「画像」を「引数として」受け取ります。

シェルスクリプトを書くにあたり、「ファイル名をMacの通知に入れる」ことに苦戦しました…が、どうにかなりました。勉強になりました。
かなりのエスケープ処理です。
また、Automatorの処理内容をご覧いただければわかるかと思いますが、成功や失敗などには関係なく通知が届きます。
気になる方はその辺りの処理を入れていただいて、こちらの記事へのコメント等で共有いただけますと嬉しいです(笑)

もし圧縮レベルを変更したい場合は、「--max=80」などのコマンド引数部分を変更します。
圧縮レベルやターゲットサイズごとに別の名前をつけて保存しておくと便利かもしれませんね。

pngquantのオプション一覧
Jpegoptimのオプション一覧

画像を右クリックして実行する

コンテキストメニューを確認

早速、適当な画像を右クリック(2本指クリック)し、コンテキストメニューを開いて「サービス」に登録されているかを確認します。

無事に登録されていたら、実行します。

コンテキストメニューを確認

どのファイルが圧縮されたかの通知が届きます。