ありあわせの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)"