[Mac, Retina, Automator]スクショ(png)のファイルサイズが大きいから圧縮してからメール添付してるけど、面倒なので自動化してみた
タイトルのまんまですが(汗)、
Retina Macのスクショは、メール添付するには無駄にでかいです。
そこでいつも ImageOptim で該当のスクショ画像を圧縮してました。
- ImageOptimを起動
- スクショ保存フォルダを開く
- 該当スクショを ImageOptim にドラッグ
- 圧縮されるのを待つ
っていうたいした作業じゃないですが、頻度が増えると意外と面倒くさい。。
なので前から自動化したいと思っていました。
参考にさせていただいた先生がたのページ
Raugh さんの MACでフォルダ内の画像を一括でリサイズする方法
ImageOptim-CLI - JPEGmini for Macをコマンドラインから操作することができる圧縮ツール
やりたいこと
スクショを保存するフォルダは決めているので、
そのフォルダに画像が追加されたら検知して自動で圧縮する。
手順
- ImageOptim-CLIのインストール
- Automatorでタスク作成
ImageOptimーCLIのインストール
以下のコマンドでインストールします。
$ npm i -g imageoptim-cli
環境変数に入っているかを確認してみる
$ imageoptim -v
1.14.8
※僕がインストールした時のバージョン表示
ついでにヘルプも見てみる
$ imageoptim -h
Options:
-d, --directory directory of images to process
-a, --image-alpha pre-process PNGs with ImageAlpha.app *
-j, --jpeg-mini pre-process JPGs with JPEGmini.app **
-m, --min-quality pngquant min quality parameter
-s, --skip-if-larger pngquant use --skip-if-larger
-q, --quit quit all apps when complete
-c, --no-color disable color output
-h, --help display this usage information
-e, --examples display some example commands and uses
-v, --version display the version number
--verbose display detailed, per-file info on optimizations
* http://pngmini.com
** https://itunes.apple.com/us/app/jpegmini/id498944723
ヘルプにはちゃんと書かれてませんが、ファイル単位で圧縮したい場合はパイプで渡します。
↓こんな感じです。
$ find ~/hoge -name "*_fuga.png" | imageOptim -a
※ディレクトリを指定する場合は -d
オプションを使用して引数として渡します。
Automatorでタスク作成
アクション作成手順
- Automatorを起動
-
Cmd+N
で新規作成 - 作成する書類(アクション)の種類を選択
- 作業開始していいかの確認ダイアログを作る
- 圧縮アクションを作る
- 完了通知ダイアログを作る
- テスト
1. Automatorを起動
アプリケーション > Automator
2. Cmd+N
で新規作成
メニュー > 新規作成
でもOK
3. 作成する書類(アクション)の種類を選択
今回は
スクショを保存するフォルダは決めているので、
そのフォルダに画像が追加されたら検知して自動で圧縮する。
がやりたいことなので、「フォルダアクション」を選択。
[小休止]画面説明!
フォルダアクション選択後に表示される画面の説明をしておきます。
※他を選んでも基本同じ画面です。
↑
こんな感じです。
基本操作としては、
- ライブラリ列から利用したいアクションが入っているであろうライブラリを選択
- アクションリスト列で該当のアクションを見つける
- ドラッグしてワークフローエリアに入れる
という感じです。
名前で検索もできますが、うまくヒットしなかったりするのでググったほうが早いかもです。
4. 作業開始していいかの確認ダイアログを作る
ユーティリティ > 確認を求める
ワークフローエリアで確認ダイアログのタイトルとメッセージを入力します。
5. 圧縮アクションを作る
画像の圧縮作業はImageOptimのコマンドライン版ImageOptim-CLIで行うのでシェルスクリプトをアクションとしてワークフローエリアに入れます。
ユーティリティ > シェルスクリプトを実行
入力の引き渡し方法は引数にします。
スクリプトの中身は↓こんな感じです。
for f in "$@"
do
fext=${f##*.}
if [ $fext = "png" ]; then
find "$f" | /Users/{ユーザー名}/.nodebrew/current/bin/imageoptim -a
fi
done
※ nodebrewでnodeをバージョン管理しているので、↑このようなパスになっていますが、ImageOptimのフルパスは適宜変更してください。
$ which imageoptim
見つかった対象ファイル毎に、拡張子を調べて、pngだったらImageOptimで圧縮。
そうじゃなかったらスルーして次のファイルを処理。
って感じです。
6. 完了通知ダイアログを作る
ImageOptimのpng圧縮処理は時間がかかるので、
終わったら「終わった」と教えてくれるようにします。
ユーティリティ > 通知を表示
タイトル、サブタイトル、メッセージを入力します。
※タイトルとメッセージだけでよいと思います。
7. テスト
デバッグしてみます。
右上にある「コマ送り」ボタンをクリックしながらアクション毎にテストします。
フォルダアクションの場合、該当フォルダにファイルが追加されたというデバッグ用アクションが必要ですがそういうのは無いので、別途最初のアクションとして「指定された Finder 項目を取得」を追加して、「フォルダアクションでファイルが取り込まれた」体(てい)を作ります。
ファイルとフォルダ > 指定された Finder 項目を取得
一通りテストしてみて問題がなければ完成です。
スクショを取ったら(フォルダアクションで指定したフォルダにファイルが追加されたら)自動的にpng画像圧縮アクションが実行されます。
まとめ
今回はpng画像に対してだけ行いたかったので、本当は作業開始確認の前に、追加されたファイルの種類判定を入れたほうがいいなと思いました。
また、解像度もでかいのでリサイズしてもいいかもと思いましたが、
でっかく使いたいこともあるので、リサイズは任意に実行するため右クリックメニューにしちゃおうかと思いました。
そちらはまた別途。
Author And Source
この問題について([Mac, Retina, Automator]スクショ(png)のファイルサイズが大きいから圧縮してからメール添付してるけど、面倒なので自動化してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/yuusuke510/items/88b46363383a02da53cd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .