學習OpenSeadragon之二 (界面縮放與平移規則設置)


OpenSeadragon入門了解請看第一篇:http://www.cnblogs.com/yingjiehit/p/4362377.html

OpenSeadragon給我們提供了很多的可選界面元素,這些界面元素可以通過簡單的配置很容易的能使用了。

此外,OpenSeadragon旨在讓你把它的控制綁定到完全由你自定義的界面(例如,自定義一個按鈕,按下就執行OpenSeadragon界面里的控制)。

OpenSeadragon提供了很多選項來約束限定最大最小的變焦范圍和規划的范圍(也就是整張圖的邊界范圍)。

這些特征一般是通過不同的選項組合控制的。快速看效果可以看官網的Demo http://openseadragon.github.io/examples/ui-zoom-and-pan/

(1)拖拽平移的約束參數

visibilityRatio:規定了圖像在顯示框中最少要保留的比例,默認值0.5,范圍0-1,0表示圖像可以完全被移動到顯示框之外,1表示,圖像一點也不能被移動到顯示框之外,

如果用鼠標將圖片拖拽出去,圖片還會自動彈回來,0.3表示圖像至少要有30%在顯示框之內,如果圖像被拖出超過30%,松開鼠標后將會恢復到30%的圖像在框內。

例如要設置圖像最小保留比例為30%,關鍵代碼為:

OpenSeadragon({
    ...
    visibilityRatio : 0.3,  //圖片在框內的最小比例
    ...
});

constrainDuringPan : 規定了圖像是否能被拖拽出允許最小范圍,true為不允許,false為允許 配合上面的visibilityRatio參數使用,也就是是說,例如visibilityRatio為0.3

constrainDuringPan 為true的時候,圖片被拖出70%之后就不能再拖出更多了,將其設置為false的時候,圖片可以被完全脫出顯示框,但是松開鼠標之后,圖片會自動彈回到保留30%的位置。

在上一篇http://www.cnblogs.com/yingjiehit/p/4362377.html的Demo基礎上,我們設置這兩個屬性,運行以下代碼,你拖動圖片,你將感受到效果:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>OpenSeadragon_Demo1</title>
 6     <script src="openseadragon.min.js"></script>
 7 </head>
 8 <body>
 9     <h1>圖像顯示范圍控制</h1>
10     <div id="openSeadragon1" style="width:500px; height:400px; border:1px solid blue;"></div>
11 </body>    
12 <script type="text/javascript">
13 var openSeadragon = OpenSeadragon({
14     id:  "openSeadragon1",  //指定顯示的div
15     prefixUrl: "./images/", //庫中按鈕等圖片所在文件夾
16     tileSources: {
17         Image: {
18             xmlns:  "http://schemas.microsoft.com/deepzoom/2009",//指令集
19             Url: "./aaa_files/", //圖片庫地址
20             Overlap: "1",        //相鄰圖片重合的像素
21             TileSize: "256",     //單個切片(正方形)的邊長
22             Format : "jpg",         //切片格式
23             Size:{               //圖片總大小
24                 Height: "1600",
25                 Width:  "2560"
26             } 
27         }
28     },
29     visibilityRatio : 0.3,  //圖片在框內的最小比例
30     constrainDuringPan : true //管拖拽,true就不能拖拽了
31 });
32 </script>
33 </html>

怎么也拖拽不出去更多了:

將visibilityRatio 設為1、將constrainDuringPan 設為true,這樣,圖像將不能有一點被拖出邊框:

 

(2)設置圖像的放大倍數允許范圍

defaultZoomLevel :初始化默認放大倍數,按home鍵也返回顯示該放大倍數,值為0時則顯示自動適應顯示框(view)的倍數,默認值為0
minZoomLevel       最小允許放大倍數 默認值null
maxZoomLevel      最大允許放大倍數 默認值null

(3)移動方向限制

panHorizontal: 水平移動約束,設為true則圖片可以水平被拖動,false則不能水平移動,默認值true。

(4)開啟調試模式

debugMode:設置為true的時候調試模式開啟,此時將會在圖片上顯示放大倍數、層數等信息,每一張切片的位置也會被顯示。

我們將上面的關鍵代碼OpenSeadragon改為:

 1 var openSeadragon = OpenSeadragon({
 2     id:  "openSeadragon1",  //指定顯示的div
 3     prefixUrl: "./images/", //庫中按鈕等圖片所在文件夾
 4     tileSources: {
 5         Image: {
 6             xmlns:  "http://schemas.microsoft.com/deepzoom/2009",//指令集
 7             Url: "./aaa_files/", //圖片庫地址
 8             Overlap: "1",        //相鄰圖片重合的像素
 9             TileSize: "256",     //單個切片(正方形)的邊長
10             Format : "jpg",         //切片格式
11             Size:{               //圖片總大小
12                 Height: "1600",
13                 Width:  "2560"
14             } 
15         }
16     },
17     debugMode : true, //開啟調試模式
18     panHorizontal:     false, //不能水平移動了,只能豎直移動
19     defaultZoomLevel:     5, //初始化默認放大倍數,按home鍵也返回該層
20     minZoomLevel:     3,  //最小允許放大倍數
21     maxZoomLevel:     20, //最大允許放大倍數
22 });

將會得到以下效果

發現不能左右拖動,只能上下拖動了,並且多了很多顯示的數據,一開始放大倍數為5倍,最多可以放大20倍,最少也要看放大3被的。

如何查看放大倍數呢?我們將panHorizontal改為true。

1 var openSeadragon = OpenSeadragon({
2         ...
3     panHorizontal:     true, //可以水平移動
4         ...
5 });

此時就能將圖片往右下方拖,在左上方有標記Zoom顯示當前放大了多少倍:

以下是本次用到的屬性和一些常用圖片查看控制屬性總結,讀者可以自己試驗一下效果:

  • panHorizontal (default: true)        水平允許拖拽
  • panVertical (default: true)           豎直允許拖拽
  • constrainDuringPan (default: false) 是否限制拖拽出允許顯示范圍
  • wrapHorizontal (default: false)       在水平方向會連續顯示,例如當圖像顯示到右邊緣以外的時候,會把圖像的左邊緣跟右邊緣結合,接着顯示,一般用於顯示地圖
  • wrapVertical (default: false)          垂直方向連續顯示
  • visibilityRatio (default: 0.5)      圖片在顯示框view中被限制的最小百分百
  • minPixelRatio (default: 0.5)          最小像素比,這個值越高效果,停止顯示更高效果的值就約低,比如帶寬低的時候可以設置在1.5,具體效果我也沒完全讀懂
  • minZoomImageRatio (default: 0.9)    最小允許的縮小比例
  • maxZoomPixelRatio (default: 2)  像素最大允許放大比例,如果是設置為“infinite”可以無限放大,在HTML5的canvas中用的時候,如果viewing device不可用則效果會不好
  • defaultZoomLevel (default: 0)    默認顯示的放大倍數,頁面剛打開或按home鍵時候的放大倍數,0則自動適應view
  • minZoomLevel (default: null)      最小放大倍數
  • maxZoomLevel (default: null)      最大放大倍數

 


免責聲明!

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



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