Archive for the ‘mac’ Category

OSXでmozjpegを使おうと思ったら、mozjpegのコマンドcjpegが使えないというか、cjpegは私の環境では


/usr/local/bin/cjpeg

を指す事になっており、それに気づかず、自分のmozjpegはセルフビルドしてないからjpeg to jpegの圧縮に対応してないのだろうか、とか混乱しまくったので、誰か他にも同じような人が出て来る事の内容に書いておきます。

brew install mozjpeg

でmozjpegをインストール

私のmozjpegはversion3.2でした。

/usr/local/Cellar/mozjpeg/3.2/

以下にインストールされています。
よってこれをパスの通ったディレクトリにシンボリックリンクを作ってあげます。

ln -s /usr/local/Cellar/mozjpeg/3.2/bin/jpegtran /usr/local/bin/mozjpegtran
ln -s /usr/local/Cellar/mozjpeg/3.2/bin/cjpeg /usr/local/bin/mozcjpeg

これでmozjpegが使えるようになりました。

mozjpeg -optimize -quality 80 infile.jpg > outfile.jpg

とする事で動作します。

手元のjpegファイルではmozjpegを使う事によって80%のファイル容量削減に成功しました。画質はかなり高く、相当ズームしてみないと違いはわかりません。

かなり使えそうなので、ブログ用の写真画像を用意するスクリプトにmozjpegをかましてみました。今後は画像容量の削減にかなり役立ってくれそうです。

下のコードは、リサイズ圧縮したい画像のあるディレクトリで実行すると、長辺をsizeで指定したサイズに比率を維持したままリサイズし、それらをmozjpegを使って圧縮するrubyによるスクリプトです。

別途imagemagickをインストールしてお使いいただけます。

#!/usr/bin/ruby
size="1024"
quality="85"
resized_delete=false


#imagemagick resize
resize_cmd = "mkdir resized; find ./ -name '*jpg' -type f | xargs -I@ convert -resize "+size+"x"+size+" -verbose @ ./resized/@"
value = `#{resize_cmd}`

#mozjpeg compression
puts "***mozjpeg_compression***\n"

#処理に必要なファイル集めて保存場所の作成
p files=`find ./* -mindepth 1 -name "*jpg"`.chomp().split("\n")
comp_cmd="mkdir resize_and_compressed;"

#mozjpeg実行
files.map { |f| comp_cmd+="mozcjpeg -optimize -quality "+quality+" "+f+" > " +f.gsub('./resized/','./resize_and_compressed/') +";"}
value = `#{comp_cmd}`

#1024pxオリジナルの削除
if resized_delete == true then
  `#{"rm -rf ./resized"}`
end

上記スクリプトで1024pxにリサイズした画像の圧縮前と圧縮後のサンプルを置いておきます。

圧縮前(471kB)
圧縮前

圧縮後(quality85 111kB)
圧縮後

terminal

前回の記事

lftpで自動的にcdとlcdコマンドを使って環境を合わせる方法 » WisdomTrees : http://wisdomtrees.net/?p=707

の続きです。

lftpで自動的に目標のサーバーへmirror出来るようになったので、更に発展させてローカルでの編集を監視して、即座にサーバーに反映させるような仕組みを作りました。

まず前回作ったコマンドを使ってlftp mirrorをする仕組みをシェルスクリプト化します。

#target_mirror.sh
#!/bin/sh

lftp -c 'connect XXX; cd /target/Dir/; lcd ~/Dropbox/target/Dir/; mirror -R'

そしてディレクトリの監視には、fswatchというソフトを使います。

brew install fswatch

でinstallできます。

Linux環境だと似たようなのにinotify-toolsというものがあるようです。

あとは、自分が編集しているディレクトリを監視させて、変更があった場合にはtarget_mirror.shを実行する仕組みを作ります。

fswatch -o ~/Dropbox/target/Dir | xargs -n1 -I{} target_mirror.sh

これで、ファイルを保存したタイミングで自動的にlftp mirrorコマンドが実行され、ローカルの変更が即座にリモートに反映されます。

images

先日MacbookのデフォルトブラウザをFirefoxからSafariに変更した。

Mac上でFirefoxを使うと、どうしても処理がワンテンポ遅くなってしまう事にもう耐えられなかった。

その点、SafariはやはりMacOSのデフォルトブラウザだけあって、処理や通信の重さを感じさせないような作りになっていて、ストレスが随分軽減された。

Firefoxのアドオン資産が手放せず、これまでブラウザの移行に躊躇してきたが、今は移行してよかったと思っている。

しかし、FirefoxからSafariに移行して以来、GoogleAnalyticsを見ることができなくなってしまった。

その原因を調べてみると、Safariに導入したエクステンション「μAdblock」が読み込みの邪魔をしているらしかった。

もしくは、μAdblockを感知したGoogleAnalyticsサーバーが、通信を遮断するといったところだろうか。

ということで、μAdblockのアイコンをクリックして、AnalyticsのサーバーではAdblock機能をOFFにする事で正常に読み込めるようになった。

いよいよSafariが使いやすくなったと感じている。