jpegoptimを使ってコマンドラインからjpgファイルを圧縮

コマンドラインからサクッとファイルサイズを圧縮。jpeg版。
https://github.com/tjko/jpegoptim

インストール

macならHomebrewからインストールが可能。
[shell]
$ brew install jpegoptim
[/shell]

使い方

[shell]
$ jpegoptim -s -m 90 path/to/image.jpg
[/shell]
上記コマンドで、画像ファイル path/to/image.jpg を圧縮して上書きします。-m 90 で画質を90%に指定している。
よく使うであろうオプションはこんな感じ。

-d <path> 出力ディレクトリ
-o        同名ファイルがあった場合上書き。
-s        EXIFなどのメタデータを全削除。

使い方やその他のオプションについては [shell]jpegoptim -h[/shell]で確認できます。

png版はこちら → https://qroon.link/compress_png_on_pngquant

pngquantを使ってコマンドラインからpngファイルを圧縮

コマンドラインからサクッとファイルサイズを圧縮。
https://pngquant.org/

インストール

macならHomebrewからインストールが可能。
[shell]
$ brew install pngquant
[/shell]

使い方

[shell]
$ pngquant –ext .png -f path/to/image.png
[/shell]
上記コマンドで、画像ファイル path/to/image.png を圧縮して上書きします。—ext .png で接尾辞を設定、-fで上書きを許可します。これらオプションを指定しない場合、ファイル名-or8.png もしくは ファイル名-fs8.png として保存されます。
よく使うであろうオプションはこんな感じ。
[shell]
–force / -f        上書きを許可。
–skip-if-larger    オリジナルサイズより縮小された場合のみ保存。
–output file / -o  file ファイル名をfileとして保存。
–ext new.png       圧縮ファイルの接尾辞と拡張しを new.png として出力。
–quality min-max   画像のクオリティをmin〜maxの範囲で出力。0〜100で指定。
–speed N           出力スピードの設定。1 が遅くて高精度、3がデフォルト、11が速くて低精度。
[/shell]
使い方やその他のオプションについては [shell]pngquant -h[/shell]で確認できます。

Chromeを command +q で閉じるときに確認をはさむ

command + w でchromeのタブを閉じていると、command + q と誤打して困っていたけど、終了前に確認を挟む設定があった。

メニューバーの Chrome > 終了する前に警告メッセージを表示する にチェックを入れる。

ずっとChromeの設定画面内を探していたよ。。

macでコマンド一発で画像を縮小 sips

ブログにアップする画像を縮小するために使用しているsipsコマンドを紹介います。

macにインストールされているscriptable image processing system、略してsipsコマンド。コマンドラインで画像の作成日時や解像度などの情報を操作するコマンドです。

さまざまな情報の確認、変更ができるのですが、一番よく使用するのが画像の縮小。これを覚えるだけでもかなり便利です。
[shell]
$ sips -Z 1600 path/to/imagefile.jpg –out path/to/outputfile.jpg
[/shell]

これで画像(path/to/imagefile.jpg)の長辺を1600pxに変更してpath/to/outputfile.jpgとして保存。–out以降を省略すると画像を上書きしてしまうので注意してください。

Chrome拡張機能をショートカットキーで起動

頻繁に使用するChromeの拡張機能はショートカットキーを設定しておくと便利。
例えば私は先日紹介した Simple Window Saver を ctrl + w でウィンドウ一覧が表示されるようにしている。結局近くまでマウスを移動させるけど、行ったり来たりがなくなるだけで、動作がかなり楽になった。

ショートカットキーの設定方法

Chrome右上のメニューから その他のツール > 拡張機能 を開く。
画面左上の拡張機能の文字の左にあるハンバーガーメニューからキーボード ショートカットの設定画面にいける。
あとは登録したいアドオンのショートカットを入力するにフォーカスして、使用したいキーの組み合わせを打てばOK。

この画面見て知ったんだけど、option + o でOneTabの画面開けるのね。

Chrome拡張Simple Window Saver

Simple Window Saverは複数開いたウィンドウに名前をつけるChromeアドオン。
ウィンドウに名前をつけることで、開いているタブを保存/再開したり、ワンクリックでそのウィンドウへ飛ぶことができます。

タブ保存にはOneTabを使用していたのですが、Simple Window Saver に魅かれたのは、ウィンドウ間の移動ができるという点。プロジェクトごとにブラウザのウィンドウを作っていて、「プロジェクトAの作業が返事待ちだからプロジェクトB用に開いていたウィンドウに移動したい」ということが結構あった。

Simple Window Saverの使い方

使い方はChromeに追加した Simple Window Saver のボタンをクリックすると名前の入力欄が出てくるので、それに記入するだけで。これで今開いているウィンドウに名前が付きます。
青文字は現在閉じられているウィンドウ、黄色背景は現在のウィンドウ。カッコ内の数字はタブの数。
移動したいウィンドウ名をクリックすれば、そのウィンドウが開きます。

macでウィンドウを大量に開いていると移動が大変なのでこれは助かる!

参考

http://20kaido.com/archives/5973651.html

VCCWでmod_substituteを使用した文字列置換

大量の画像が保存されたWordPressのちょっとした修正の依頼があったが、画像データまでローカルに持ってくるのが面倒だった。そこで、サーバ側で置換された画像urlを出力して本番環境の画像を表示して作業をすることに。

ローカルではvccwを使用して作業。DBを本番環境からインポートして、search-replaceしておく。

mod_substituteをオン

[bash]$ vagrant ssh[/bash]でサーバに入り、/etc/apache2/mods-available/substitute.load のシンボリックリンクを /etc/apache2/mods-enabled 内に作成。で、apacheを再起動。
[bash]
$ sudo ln -s /etc/apache2/mods-available/substitute.load /etc/apache2/mods-enabled/
$ sudo system apache2 restart
[/bash]

.htaccessに置換の処理を記述

.htaccessに以下を記述。urlは適宜変更を。
phpのファイルを処理する場合、Substituteの置換をする。

AddOutputFilter SUBSTITUTE php

Substitute s%(href|src)=\"http://local_server(/wp-content/uploads/\d+/\d+/[^"]+\.(jpg|png|gif|svg))%$1=\"https://production_server$2%

注意事項

jsで動的に画像を出力する場合などは変換されないので注意。たとえば管理画面のメディアライブラリでは画像が出力されない。ちょっとした修正の場合には問題ないけど、がっつり編集する場合にはちゃんとデータを落としてくるなり環境をしっかり整えないとね。

phpのmb_send_mailで半角カタカナと環境依存文字に対応させる

mb_send_mailを使用すると件名や本文をメールに適した文字コードにエンコードして送信してくれます。しかし、そこで使用される文字コード ISO-2022-JP は半角カタカナや①などの環境依存文字に対応していないため???と文字化けしてしまう。そこで本文を ISO-2022-JP-MS でエンコードすることで文字化けを回避します。

$to      = 'hoge@example.test';
$from    = 'huga@example.test';
$message = '半角カタカナや環境依存文字①②③が含まれた本文';

$message = mb_convert_kana( $message, 'utf-8' );

mb_send_mail( $to, $subject, $message );

ISO-2022-JP-MSに対応しているのがPHP5.2.1からなので、これが使えない場合には[php]  $body = mb_convert_kana( $body ); [/php] で半角カタカナ→全角カタカナ変換するという手も。

参考

http://php.net/manual/ja/function.mb-send-mail.php
https://iritec.jp/web_service/8582/