👏

Omeka SのImage Serverの設定について

2023/05/25に公開

概要

Omeka SのImage Serverは、IIIF Image APIに対応した画像配信を可能とするモジュールです。

https://omeka.org/s/modules/ImageServer/

IIIF Serverモジュールと組み合わせて使用することにより、IIIFマニフェストによる配信も可能になります。

Image Serverモジュールでは、タイル画像の作成方法を含めて、さまざまな設定が可能です。本記事では、これらの設定について、調査結果を共有します。

実験環境

今回は、Amazon LightsailのLAMPインスタンスを使用します。2 GB RAM, 1 vCPUの比較的低スペックな環境を用います。

Amazon Lightsailを用いたOmeka Sの構築方法は、以下などを参考にしてください。

https://zenn.dev/nakamura196/articles/f20943b314524c

また、今回は以下のスクリプトを利用しました。今回検証する「Image Server」モジュールの使用に必要な、関連モジュールを合わせてインストールします。

https://github.com/nakamura196/omeka_aws/blob/main/2023-05-25.sh

タイル画像の作成に関する設定

ImageServerモジュールのインストール後、以下にアクセスすると、ImageServerの設定画面にアクセスできます。

/admin/module/configure?id=ImageServer

以下の画面の「Tiling service」の箇所で設定を行うことができます。

Image processor項目

本モジュールの説明ページでは、vipsのインストールが推奨されていました。上記のスクリプトでも、以下によって、vipsをインストールしています。

sudo apt install --no-install-recommends libvips-tools

そのため、上記設定画面の「Image processor」項目の初期値に基づき、タイル画像の作成には、以後vipsが使用されます。

Tilling type項目

この項目では、「Deep Zoom Image」「Zoomify」「Jpeg 2000」「Tiled tiff」の4つの項目を選択することができます。これらについて、公式サイトでは以下のように記載されています。

Four format are proposed to create tiles: DeepZoom, Zoomify, Jpeg 2000 and
pyramidal Tiff. The recommended format is DeepZoom. For Jpeg 2000 and pyramidal tiff, some other tools may be required.

(日本語訳)タイルを作成するために4つのフォーマットが提案されています: DeepZoom、Zoomify、Jpeg2000、ピラミッド型Tiff。ピラミッド型Tiffの4つの形式が提案されています。推奨フォーマットはDeepZoomです。Jpeg 2000とpyramidal tiffについては、他のツールが必要な場合があります。

以下、「Deep Zoom Image」と「Tiled tiff」を選択した際の違いについて説明します。今回、国立国会図書館で公開されている以下の画像を使用します。

https://dl.ndl.go.jp/api/iiif/1302584/R0000001/full/full/0/default.jpg

サイズは4096x6144で、4.5MBの画像を使用します。

Deep Zoom Image

アイテムを新規に作成して、メディアの追加方法として「URL」を選択して、上記のURLを貼り付けます。

その結果、files/tile配下にxxx.dziというファイルとxxx.filesというディレクトリが作成されます。

bitnami@ip-172-26-13-8:~/htdocs/omeka_s0525/files/tile$ ls
ee93d7a4e7758c92ab5db904cb74c0ca4911b6bc.dzi  ee93d7a4e7758c92ab5db904cb74c0ca4911b6bc_files  index.html

xxx_filesの中には、事前に分割されたタイル画像が作成されます。

bitnami@ip-172-26-13-8:~/htdocs/omeka_s0525/files/tile$ ls ee93d7a4e7758c92ab5db904cb74c0ca4911b6bc_files
0  1  10  11  12  13  2  3  4  5  6  7  8  9  vips-properties.xml

公式ページによると、大きな画像や動的なタイル画像の生成に時間がかかる場合、事前にタイル分割された方法が推奨されています。

For big images that are not stored in a versatile format (jpeg 2000 or tiled tiff) and that cannot be processed dynamically quickly (for example with vips), it is recommended to pre-tile them to load and zoom them instantly. It can be done for any size of images. It may be recommended to manage at least the big images (more than 10 to 50 MB, according to your server and your public.

このオプションで作成した画像をIIIFビューアで読み込んだところ、/iiif/2/3/1792,2048,256,256/256,/0/default.jpgといったパスにアクセスしたものが、/files/tile/ee93d7a4e7758c92ab5db904cb74c0ca4911b6bc_files/12/4_5.jpg のようなパスに302リダイレクトされていることが確認できます。

IIIF Image APIのリクエストをDZI画像へのパスにリダイレクトさせることで、今回のような低スペックなサーバでも、比較的短時間でタイル画像を返却できていると思われます。

なお、以下のような任意の反映を切り出して表示した場合には、

https://omekas.aws.ldas.jp/omeka_s0525/iiif/2/3/2249,1813,534,531/full/0/default.jpg

以下のように、DZIへのパスにリダイレクトされず、指定した領域の画像が表示されました。事前に作成したDZIのタイル画像に合致しない場合、動的に画像の切り出しが行われていると思われます。(ありがたい!)

Tiled tiff

次に、Tilling type項目の項目を「Tiled tiff」に設定してみます。結果、以下のように、tifファイルのみが作成されました。

bitnami@ip-172-26-13-8:~/htdocs/omeka_s0525/files/tile$ ls
d553b22f75cfe212154d495137442c0baf7937ea.tif  index.html

こちらをIIIFビューアで表示したところ、先のように302リダイレクトはされませんでした。ただ、pendingの時間が長く、ぼやけた画像が長時間表示されてしまいました。

この原因として、今回は低スペックのサーバを使用したため、Tiled tiff画像に対する動的な処理に時間がかかっていることが想像されます。

(補足) http/2対応

http/2へ対応することが推奨されています。

Webサーバー(通常はApacheまたはNginx)をhttp/2プロトコルを使用してファイルを提供するように設定することが推奨されます。これにより、同一のTCP接続中に複数のファイルを送信することが可能になり、複数のタイルをより早く提供することができます。

Amazon Lightsailでのhttp/2対応については、以下の記事が参考になりました。

https://vanbi.com/aws-lightsail-http2/

まとめ

Omeka SのImage Serverモジュールの設定(の一部)について調査しました。特にタイル画像の生成については、対象画像やサーバのスペックに応じて、適切なものを選択する必要がありそうです。

Omeka Sを用いたIIIF画像配信にあたり、参考になりましたら幸いです。

Discussion