ありあわせのUnixツールで画像処理をする偏屈シリーズ、第5弾: gmakeでサムネギャラリー

gmakeとjpegリサイズコマンドでサムネギャラリーを生成しちゃう。見るのはブラウザ。サムネhtmlができると、firefox -remoteでブラウザを立ち上げてくれちゃうので便利。

サムネコマンドはGraphicsMagickのconvertでもいいんだけど、ここではサムネ生成に特化した高速コマンドepegを使う。

すごくいい加減なハックなんだけど、ちゃんとしたサムネビューアよりもこっちを使ってしまう。シェルコマンドによるカスタムカが自由ってのが魅力なのかな。


使い方:


mkdir tn
cd tn
wget http://tengu.us/file/thumbnail-viewer/Makefile
vi Makefile # 設定編集
make -i


thumbnail.gmake


#
# 設定: 適切なimg_dirとconverterを選んでください。
#
# 画像のあるディレクト
img_dir=$(HOME)/Desktop

# サムネ生成コマンドの定義。
# epegは高速サムネ生成コマンド。インストールの仕方はこちらを参照。
converter=epeg -m 200

# epegが無い場合はGraphicsMagicを使用。こっちの方がepegより画面の質がいいみたい。
# ubunto: sudo apt-get install graphicsmagick
# freebsd: cd /usr/ports/graphics/GraphicsMagick/; sudo make install
# 詳しくは「man 1 gm」を
#converter=gm convert -geometry 21600@

#### 設定終り。

# 画像ファイルのリスト。ここで $(shell find . -name '*.jpg')なんて深く掘ることもできると思う。
jpg_files=$(wildcard $(img_dir)/*.jpg)

# gmakeのパターン書き換えコマンドでサムネファイルのパスを生成する。
# ~/Desktop/foo.jpg が ./tn/foo.jpg とサブディレクトリに入る。
tn_files=$(patsubst $(img_dir)/%,tn/%,$(jpg_files))

# サムネファイル生成ルール。
# ~/Desktop/foo.jpg があったら ./tn/foo.jpgを作りなさい、とういルール。
tn/%.jpg : $(img_dir)/%.jpg
@mkdir -p tn
$(converter) $< $@
# もし変換エラーする画像があるばあいは、上の行に「; true」足せば、エラーを無視して完了します。
# make -i という手もあるけどね。

# ターゲット
# gmake とすると生成してブラウザにロードする
all: show

# お片付け
clean:
rm -f tn.html
rm -fr tn

# サムネファイルを生成するターゲット
tn_files: $(tn_files)

# htmlファイルはサムネファイルに依存。
tn.html: tn_files
# 超手抜きhtml。でも見栄えはわるくない。
find tn -type f \
| sed 's|\(.*\)|<img src="\1">|' \
> $@

# 見せるにはfirefoxのリモコンコマンドでブラウザを立ち上げるか新タブで開ける。
show: tn.html
firefox -a firefox -remote "openurl(file://$(PWD)/tn.html)"