Web用の画像ビューワをさがして(書きかけ)

先日、京大にてシンポジウムを開催した折りに、若手の人と話をしていて、Webビューワの情報とか得にくくて困っている、というお話をうかがったので、知っている限りのことを少しずつメモしていくことにしました。間違っているところなどありましたらお知らせください。

比較的大きな画像をさくさくと拡大縮小しながら見えるようにしたい、という要望は、手元に大きな画像があったりすると、どうしても手を出してみたくなるものです。PDFで配った方が実は利用者には喜ばれるのですが、それはそれとして、きちんとWeb上の関連情報とマッシュアップしながら便利なサービスを提供したいと思ったら、やはり画像は手元に置いてサーバ上で公開したいものです。

まず、画像を拡大縮小するだけでいいのなら、最近はOpen Sea Dragon

http://openseadragon.github.io/

というタイル画像で送出してくれるフリーソフトがあります。Javascriptで動いてくれて、コードを書くのも簡単です。Javascriptを読み込んで、対象となる画像ファイルの情報を読み込ませるだけでOKです。タイル画像の作成が面倒そう…と思う人もおられるかもしれませんが、そこは、フリーソフトの世界ですので、世界中の誰かが便利なツールを作ってくださっています。DZI形式でよければ、たとえば、
http://openseadragon.github.io/examples/creating-zooming-images/
にあるPythonスクリプトを回せばすぐに、必要なディレクトリが作成され、その中に大量のタイル分割画像が格納され、それらをマッピングするためのXMLファイル(拡張子は.dzi?)もできてしまうでしょう。あとは、ここで生成されたファイルをtileSources:の値として指定しつつ、たとえば以下のように書いておけばOKです。




test





これで、ぬるぬると拡大縮小できる巨大画像の公開ができてしまいます。たとえば以下では24MBのjpeg画像をタイル化しています。

http://bauddha.dhii.jp/seadragon/mandala.html


ただし、この場合の注意点は、とにかく、大量の細かい画像のリクエストがサーバ側に行くことになりますので、普通にApacheを動かしているだけだと、同じマシンの他のサービスにちょっと迷惑をかけるかもしれません。できれば、nginx のような軽量高速タイプのHTTPサーバを立ててそちらからアクセスするように設定するか、あるいは、そもそも画像を作成するところからして、後述するIIIF Image Serverを立ててしまうという手もあります。もちろん、アクセスがそんなになさそうなサイト/コンテンツであれば普通にApacheのままでも大丈夫かもしれませんが。

 さて、次に気になってくるのは、私の場合には、このままだとコンテンツプロバイダーからの要求をなんだかうまく反映させられないような感じである、という点です。たとえば、画像を最初に開いたときに、画像の中の特定箇所を表示させるようにしたい、と思ったとき、どうすればいいのか。かつて、私は、それを実現できるフリーソフトを見付けられなかったので、Javascriptで自作したことがあります。もちろん、タイル画像作成ソフトも自作です。これはSAT2012にて使われているものです。同様の仕組みは、たとえばe国宝でも実装されています。これも多分オリジナルなんではないかと思います。フランス国立図書館のgallicaでは拡張子のような形で画像の表示位置などを調整できるようになっていて、結構圧倒されます。しかし、そんな酔狂なことばかりしていては体が持ちませんので、そろそろそういうことが簡単にできるフリーソフトが出ているのではないか…?と思っていたら、先日、ようやく出会うことができました。が、それについてはまた次回…。キーワードはIIIF(International Image Interoperability Framework)です。

 それから、有料のものとしてはZoomifyが有名です。お金があって、特別な理由がなければ、業者さんに「Zoomifyを使ってください」と言っておくのが良いのではないかと思っておりますが、他に良いものを御存知でしたらお知らせください。