Imagemagick-logo

このブログは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なファイル管理ツールとターミナルのいいとこ取りな使い勝手があって、非常に便利です。もしあまり標準入出力の機能を使われていないのであれば、ぜひ使ってみてください。