EmacsからImageMagickを利用する単純な方法
このブログはorg-modeで記事を書いて、org2blog/wp-modeでWordPressへ投稿するという、いささかマニアックなやり方で運用しています。 (2017/02/21 現在 Jekyllへ移行しています) その際、画像ファイルのサイズを縮小したり回転したいときがあるのですが、これを有名な画像編集のコマンドツール ImageMagick
をEmacsから呼び出して対応するときがあります。
やりかた自体はEmacsの基本的なことなのですが、外部コマンドであるImageMagickをEmacs上だけで操作することで全体の作業がEmacsで完結してしまう、という点がポイントです。
画像サイズを変更する
例えば、ある画像のサイズを小さくしたい場合、ImageMgickなら次のように行ないます。
$ convert image.jpg -geometry 600 image.jpg
この場合、image.jpgの画像サイズを幅600ピクセルに変更し、同じファイル名で上書きします。高さは自動的に同じ比率で決定されます。
これをEmacsユーザーならお馴染みの Dired
で実行する場合、Diredを開いて
/Users/lion/Blog: total used in directory 13296 available 8793996 drwxr-xr-x@ 24 lion staff 816 9 7 23:22 . drwx------@ 54 lion staff 1836 9 8 09:43 .. -rw-r--r--@ 1 lion staff 8196 9 3 21:23 image1.jpg -rw-r--r--@ 1 lion staff 688 8 18 21:19 image2.jpg -rw-r--r--@ 1 lion staff 222 8 27 09:10 image3.jpg
変換したいファイル名の上にカーソルを移動して、 !
キーを押して
! on image1.jpg: convert ? -geometry ?
とすることで実行できます。そのままではDired画面が更新されないので、gキーを押してリロードします。
複数の画像を選ぶ場合は、 m
キーを押してマークを複数個つけた後、 !
を押して同じようにすればOKです。
このやりかたを一度覚えてしまえば、自分が普段、ターミナル画面でやっていることは同じ要領でできるので、いちいちターミナル系のアプリを起動させる必要がないので楽チンです。
画像を回転させる
画像を180度回転させる場合は、
! on image1.jpg: convert ? -rotate 180 ?
画像フォーマットを変換する
pngファイルからjpegファイルを生成する。
! on image1.png: convert ? -quality 70 image1.jpg
pngファイルからjpegファイルを生成する。(ファイル名は同じまま)
! on image1.png: convert ? -quality 70 $(echo ? |sed s/\\.png$/.jpg/g)
画像サイズを調べる
画像のサイズなどを調べるコマンド identify
を使います。
! on image1.jpg: identify
次のような情報が表示されます。
image1.jpg JPEG 2592x1936 2592x1936+0+0 8-bit sRGB 1.687MB 0.000u 0:00.000
余計なExifデータを削除する
ImageMagickではないのですが exiv2
というコマンドラインを使って
! on image1.jpg: exiv2 rm
余計なExifデータを削除してしまうこともあります。
exiv2の記事はこちら → JpegのExifを一発で削除するコマンド
Emacsの標準入出力
Emacsが快適な理由の一つは、機能が豊富とかそういうこと以前に、標準入出力を使った外部コマンドとの連携機能が豊富な点があげれます。
特に今回紹介したDiredを使った外部のコマンドと連携は、GUIなファイル管理ツールとターミナルのいいとこ取りな使い勝手があって、非常に便利です。もしあまり標準入出力の機能を使われていないのであれば、ぜひ使ってみてください。