「TEI用ビューワでローカルPC上の画像を表示するには」
の続編、今度は画像ビューワ組込み編です。この辺からちょっとややこしくなってきます。
まず、画像ビューワとして OpenSeadragon を組込みます。そのためには…
なんでもいいのでサンプル画像を用意して、sample.jpgというファイル名をつけておいてください。
それから、こちらのzipファイルをダウンロードして、前回作成したhtmlファイルと同じフォルダで展開してください。
そうすると、大体以下のような感じになっていると思います。zipファイルの展開は忘れずにやってください。
次に、以下のものをコピペしてHTMLファイルとして保存して、先ほどと同じように、なんらかのTEI/XMLファイルをアップロードしてみてください。 そうすると、sample.jpgが表示されるはずですが、いかがでしょうか?
以下のものには、今回のために改良した箇所にコメントをつけていますので、それを読んで、何が行われているのかを把握してください。
<!doctype html> <html lang="ja"> <head> <!-- Favicons --> <script src="https://code.jquery.com/jquery-3.6.0.js"></script> <script src="openseadragon-bin-4.0.0/openseadragon.min.js"></script> <!-- openseadragonのプログラムを読み込んだ--> </head> <body> <h1>TEIビューワ ver.0.1</h1> <div style="display: flex;"><!-- 本文とビューワを横並びにするためにdivタグを両者の上位に追加してスタイル display:flexを付与--> <div id="text_body" style="writing-mode: vertical-rl" > <div id="body_result" style="overflow-x: scroll;width:600px;height:600px;padding:10px;"><!-- 本文の幅を狭くした--> </div> </div> <div id="osd" style="width:400px;height:400px"></div><!-- openseadragonを表示させるための場所をid="osd"で指定して、さらに高さ・幅をスタイルで指定--> </div> <div id="input1" style="padding:10px">本文:<br/> <input class="file_input1" type="file" multiple="" class="btn btn-default"> </div> <script> $( function() { var viewer = ''; $('.file_input1').change(function(){ for (var i = 0; i < this.files.length; ++i){ if (this.files[i].type == 'text/xml'){ var reader = new FileReader(); reader.onload = function(e){ var xmldata = $.parseXML(e.target.result); // TEI/XMLファイルの内容をXMLでパースしてxmldata変数に代入 $(xmldata).find('titleStmt').each(function(){ $(this).find('title').each(function(){ // TEI/XMLのデータからタイトルを取得 $('#body_result').append('<span style="font-weight:bold">'+$(this).html()+'</span>'); //タイトルを<span>タグに入れてid="body_resut"のエレメントに付与 }); $(this).find('author').each(function(){ // TEI/XMLのデータから著者名を取得 $('#body_result').append('<div class="author">'+$(this).html()+'</div>'); // 著者名を<div>タグに入れてid="body_resut"のエレメントに付与 }); }); $(xmldata).find('text').find('body').each(function(){ $('#body_result').append($(this).html()); }); } reader.readAsText(this.files[i], "utf-8") } } viewer = OpenSeadragon({ // ここからはopenseadragonを起動させるための設定。ファイル読み込みの際に起動するようになっている。 id: "osd", // id="osd"のdivタグのところにopenseadragonビューワを表示させることを指定。 sequenceMode: false, // 画像が1枚だけであることを指定(複数画像を頁遷移したい時はここをtrueにする) prefixUrl: "openseadragon-bin-4.0.0/images/", // openseadragonのアイコン画像等があるディレクトリ(フォルダ)を指定 showNavigator: true, // ナビゲータの表示の有無(trueは表示) tileSources: // 表示する画像の指定。今回は決め打ちでsample.jpg [{ type: 'image', url: 'sample.jpg', buildPyramid: false // 画像が1枚だけのピラミッド化されてないファイルであると指定 }] }); }); }); </script> </body> </html>
うまくできていると、以下のキャプチャ画像のようになります。画像はホイールなどで拡大縮小できるはずです。ローカルPC上の画像なのでストレスなく拡大縮小できると思います。
というわけで、これで「TEI/XMLファイルを読み込ませると画像も読み込ませる」ことができました。JavascriptとXMLにある程度慣れている人ならあとは自力でできると思いますが、次は、TEI/XMLファイル中の画像ファイルを読み出してそれをビューワ上に表示させる、ことを目指します。次回の掲載はちょっと時間がかかってしまうかもしれませんが、しばしお待ちください…