「TEI用ビューワでローカルPC上の画像を表示するには」
の続編、今度は画像ビューワ組込み編です。この辺からちょっとややこしくなってきます。
まず、画像ビューワとして OpenSeadragon を組込みます。そのためには…
なんでもいいのでサンプル画像を用意して、sample.jpgというファイル名をつけておいてください。
それから、こちらのzipファイルをダウンロードして、前回作成したhtmlファイルと同じフォルダで展開してください。
そうすると、大体以下のような感じになっていると思います。zipファイルの展開は忘れずにやってください。
次に、以下のものをコピペしてHTMLファイルとして保存して、先ほどと同じように、なんらかのTEI/XMLファイルをアップロードしてみてください。
そうすると、sample.jpgが表示されるはずですが、いかがでしょうか?
以下のものには、今回のために改良した箇所にコメントをつけていますので、それを読んで、何が行われているのかを把握してください。
<html lang="ja">
<head>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="openseadragon-bin-4.0.0/openseadragon.min.js"></script>
</head>
<body>
<h1>TEIビューワ ver.0.1</h1>
<div style="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>
</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);
$(xmldata).find('titleStmt').each(function(){
$(this).find('title').each(function(){
$('#body_result').append('<span style="font-weight:bold">'+$(this).html()+'</span>');
});
$(this).find('author').each(function(){
$('#body_result').append('<div class="author">'+$(this).html()+'</div>');
});
});
$(xmldata).find('text').find('body').each(function(){
$('#body_result').append($(this).html());
});
}
reader.readAsText(this.files[i], "utf-8")
}
}
viewer = OpenSeadragon({
id: "osd",
sequenceMode: false,
prefixUrl: "openseadragon-bin-4.0.0/images/",
showNavigator: true,
tileSources:
[{
type: 'image',
url: 'sample.jpg',
buildPyramid: false
}]
});
});
});
</script>
</body>
</html>
うまくできていると、以下のキャプチャ画像のようになります。画像はホイールなどで拡大縮小できるはずです。ローカルPC上の画像なのでストレスなく拡大縮小できると思います。
というわけで、これで「TEI/XMLファイルを読み込ませると画像も読み込ませる」ことができました。JavascriptとXMLにある程度慣れている人ならあとは自力でできると思いますが、次は、TEI/XMLファイル中の画像ファイルを読み出してそれをビューワ上に表示させる、ことを目指します。次回の掲載はちょっと時間がかかってしまうかもしれませんが、しばしお待ちください…