學習OpenSeadragon之一(一個顯示多層圖片的開源JS庫)


OpenSeadragon是一個可以顯示多層圖片(可放大縮小)Web庫,基於JavaScript,支持桌面和手機。

由於我項目需要,卻沒有找到任何中文教程,因此在官網上一邊學習,一邊總結於此。

官網是http://openseadragon.github.io/ ,在官網首頁可以看到Demo,一個可以將圖片放大縮小拖動的視圖框。

以下是第一個例子:

1.庫文件下載

首先進入官網,點擊右上角的下載圖標下載ZIP或者TAR格式的庫文件壓縮包,解壓到工程文件夾中。

在工程中我們只需要用到openseadragon.min.js庫和存有各種按鈕圖片的imags文件夾即可。

2.圖片准備

OpenSeadragon支持很多圖片協議和格式,通常這些圖片都是由很多圖片的切片組成的,例如一張很大的圖,需要剪裁成很多小圖,按照一定的命名和存儲規則存放。

官方也提供了很多制作這些圖片庫格式的軟件http://openseadragon.github.io/examples/creating-zooming-images/ ,列舉在這里,我們選擇Deep Zoom Composer即可,去微軟官網http://www.microsoft.com/en-us/download/details.aspx?id=24819下載安裝即可。

安裝完成后打開軟件,新建一個工程,找一張大圖片拖入軟件框中,如圖所示:


點擊Export,Output Type選擇imags,隨便起個名字例如aaa,Export options選擇Export as a collection,點擊Export即可在相應路徑生成文件。

在相應文件夾下找到dzc_output_images文件夾,里面的aaa_files文件夾就是我們要的圖片存儲格式,

而aaa.xml就記錄着圖片的長寬等信息,這是之后編程要用的。

3.代碼

做好以上工作之后就可以上代碼了,為了方便,我們將aaa_files和之前下載的openseadragon.min.js和images文件夾放在工程目錄下,並且新建一個html文件Demo0_html寫代碼。

編輯並且運行以下代碼:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>OpenSeadragon_Demo0</title>
 6     <script src="openseadragon.min.js"></script>
 7 </head>
 8 <body>
 9     <div id="openSeadragon1" style="width:800px; height:600px;"></div>
10 </body>    
11 <script type="text/javascript">
12 OpenSeadragon({
13     id:  "openSeadragon1",
14     prefixUrl: "./images/",
15     tileSources: {
16         Image: {
17             xmlns:  "http://schemas.microsoft.com/deepzoom/2009",
18             Url: "./aaa_files/",
19             Overlap: "1",
20             TileSize: "256",
21             Format : "jpg",
22             Size:{
23                 Height: "1600",
24                 Width:  "2560"
25             }
26         }
27     }
28 });
29 </script>
30 </html>

得到效果如圖:

可以自由拖動圖片,放大縮小。

從上面的例子我們不難分析出: id決定了這張圖片在有相同id的div顯示,prefixUrl是裝有各種按鈕名稱的文件夾images地址,這個文件夾是官方下載包里提供的。

tileSources說明了所要顯示源圖片的信息,其中xmlns是指令集,Url是之前制作的存放要求格式的圖片文件夾的路徑,overlap是相鄰圖片直接重疊的像素值,

TileSize是每張切片的大小,經測試,每張圖片都是正方形,TileSize是其邊長,Format是切片類型,Size則是圖片的總長寬。

這些數據在生產圖片庫的同時在aaa.xml文件里有(假如制作圖片庫的時候給文件起名aaa的話)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM