1. 程式人生 > >學習OPENSEADRAGON之二 (介面縮放與平移規則設定)

學習OPENSEADRAGON之二 (介面縮放與平移規則設定)

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

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

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

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

這些特徵一般是通過不同的選項組合控制的。

快速看效果可以看官網的Demo 

https://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基礎上,我們設定這兩個屬性,執行以下程式碼,你拖動圖片,你將感受到效果:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>OpenSeadragon_Demo1</title>
    <script src="openseadragon.min.js"></script>
</head>
<body>
    <h1>影象顯示範圍控制</h1>
    <div id="openSeadragon1" style="width:500px; height:400px; border:1px solid blue;"></div>
</body>    
<script type="text/javascript">
var openSeadragon = OpenSeadragon({
    id:  "openSeadragon1",  //指定顯示的div
    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"
            } 
        }
    },
    visibilityRatio : 0.3,  //圖片在框內的最小比例
    constrainDuringPan : true //管拖拽,true就不能拖拽了
});
</script>
</html>

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

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

(2)設定影象的放大倍數允許範圍

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

(3)移動方向限制

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

(4)開啟除錯模式

debugMode:設定為true的時候除錯模式開啟,此時將會在圖片上顯示放大倍數、層數等資訊,每一張切片的位置也會被顯示

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

var openSeadragon = OpenSeadragon({
    id:  "openSeadragon1",  //指定顯示的div
    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"
            } 
        }
    },
    debugMode : true, //開啟除錯模式
    panHorizontal:     false, //不能水平移動了,只能豎直移動
    defaultZoomLevel:     5, //初始化預設放大倍數,按home鍵也返回該層
    minZoomLevel:     3,  //最小允許放大倍數
    maxZoomLevel:     20, //最大允許放大倍數
});

將會得到以下效果:

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

如何檢視放大倍數呢?我們將 panHorizontal改為true

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

此時就能將圖片往右下方拖,在左上方有標記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)      最大放大倍數

 


來源於:

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