1. 程式人生 > >學習OPENSEADRAGON之一 (一個顯示多層圖片的開源JS庫)

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

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

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

官網是https://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下載安裝即可。(備註參考:在Java中生成切片原理是:通過Python將圖片拆分為很多小圖,底層使用的是C

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

點選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寫程式碼。

編輯並且執行以下程式碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>OpenSeadragon_Demo0</title>
    <script src="openseadragon.min.js"></script>
</head>
<body>
    <div id="openSeadragon1" style="width:800px; height:600px;"></div>
</body>    
<script type="text/javascript">
OpenSeadragon({
    id:  "openSeadragon1",
    prefixUrl: "./images/",
    tileSources: {
        Image: {
            xmlns:  "http://schemas.microsoft.com/deepzoom/2009",
            Url: "./aaa_files/",
            Overlap: "1",
            TileSize: "256",
            Format : "jpg",
            Size:{
                Height: "1600",
                Width:  "2560"
            }
        }
    }
});
</script>
</html>

得到效果如圖:

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

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

tileSources說明了所要顯示源圖片的資訊,其中xmlns是指令集,Url是之前製作的存放要求格式的圖片資料夾的路徑,overlap是相鄰圖片直接重疊的畫素值,

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

這些資料在生產圖片庫的同時在aaa.xml檔案裡有(假如製作圖片庫的時候給檔案起名aaa的話)。

 


來源於:

https://www.cnblogs.com/yingjiehit/p/4362377.html