HTML5+規範:gallery(管理系統相冊)

Gallery模塊管理系統相冊,支持從相冊中選擇圖片或視頻文件、保存圖片或視頻文件到相冊等功能。通過plus.gallery獲取相冊管理對象。

1、方法
1.1、pick: 從系統相冊選擇文件(圖片或視頻)

    void plus.gallery.pick( successCB, errorCB, option );

說明:從系統相冊中選擇圖片或視頻文件。每次僅能選擇一個文件,選擇後將返回選擇的文件路徑。

參數:

succesCB: ( GalleryPickSuccessCallback | GalleryMultiplePickSuccessCallback ) 必選 從系統相冊中選擇文件完成後的回調函數,單選時通過GalleryPickSuccessCallback回調函數返回選擇的圖片或視頻文件路徑,多選時通過GalleryMultiplePickSuccessCallback回調函數返回圖片或視頻文件路徑。

errorCB: ( GalleryErrorCallback) 可選 從系統相冊中選擇文件操作錯誤的回調函數。

option: ( GalleryOptions) 可選 設置選擇文件的參數

返回值:void : 無

平臺支持:

Android - 2.2+ (支持): 返回的是系統相冊路徑,如“file:///storage/sdcard0/DCIM/Camera/1428841301674.jpg”。

iOS - 5.1+ (支持): 受系統相冊路徑的訪問限制,選擇後圖片會先拷貝到應用沙盒下的”_doc”目錄中,如“file:///var/mobile/Applications/0373DFBF-6AA7-4C9B-AE1F-766469117C94/Library/Pandora/apps/HBuilder/doc/IMG_0005.jpg”。

示例:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript">  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇圖片  
function galleryImg() {  
// 從相冊中選擇圖片  
console.log("從相冊中選擇圖片:");  
    plus.gallery.pick( function(path){  
        console.log(path);  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    }, {filter:"image"} );  
}  
// 從相冊中選擇多張圖片  
function galleryImgs(){  
// 從相冊中選擇圖片  
console.log("從相冊中選擇多張圖片:");  
    plus.gallery.pick( function(e){  
        for(var i in e.files){  
        console.log(e.files[i]);  
        }  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    },{filter:"image",multiple:true});  
}  
</script>  
</head>  
<body >  
從相冊中選擇圖片  
<br/>  
<button onclick="galleryImg()">選擇單張圖片</button>  
<br/>  
<button onclick="galleryImgs()">選擇多張圖片</button>  
</body>  
</html>  

1.2、save: 保存文件到系統相冊中

   void plus.gallery.save( path, successCB, errorCB );

說明:保存文件到系統相冊中。 每次僅能保存一個文件,支持圖片類型(jpg/jpeg、png、bmp等格式)和視頻文件(3gp、mov等格式)。 若保存的文件系統不支持,則通過errorCB返回錯誤信息。

參數:

path : ( String ) 必選 要保存到系統相冊中的文件文件地址,僅支持本地路徑,不支持網絡路徑。

succesCB: ( GallerySuccessCallback ) 必選 保存文件到系統相冊中成功的回調函數

errorCB: ( GalleryErrorCallback) 可選 保存文件到系統相冊中失敗的回調函數

返回值:void : 無

平臺支持:android - 2.2+ (支持)、ios - 4.3+ (支持)

示例:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
var r = null;  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 保存圖片到相冊中  
function savePicture() {  
plus.gallery.save( "_doc/a.jpg", function () {  
alert( "保存圖片到相冊成功" );  
} );  
}  
</script>  
</head>  
<body >  
<input type="button" value="Save picture to Gallery" onclick="savePicture();" ></input>  
</body>  
</html>  

2、對象
2.1、GalleryOptions: JSON對象,從相冊中選擇文件的參數

屬性:

(1)、animation: (Boolean 類型 )是否顯示系統相冊文件選擇界面的動畫,可取值true、false,默認值爲true。

平臺支持:Android - 2.2+ (不支持): 忽略此參數,無動畫效果。iOS - 4.3+ (支持): 支持動畫效果。

(2)、filename: (String 類型 )選擇文件保存的路徑。某些系統不能直接使用系統相冊的路徑,這時需要將選擇的文件保存到應用可訪問的目錄中,可通過此參數設置保存文件的路徑。 如果路徑中包括文件後綴名稱,則表明指定文件路徑及名稱,否則僅指定文件保存目錄,文件名稱自動生成。

平臺支持:Android - 2.2+ (不支持): 直接返回系統相冊中的文件路徑,忽略此參數。iOS - 4.3+ (支持): iOS會將相冊中的文件拷貝到當前應用沙箱系統目錄中,如果未設置則默認使用“_doc”目錄。

(3)、filter: (GalleryFilter 類型 )相冊中選擇文件類型過濾器。系統相冊選擇器中可選擇的文件類型,可設置爲僅選擇圖片文件(“image”)、視頻文件(“video”)或所有文件(“none”),默認值爲“image”。

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇圖片  
function galleryImg() {  
// 從相冊中選擇圖片  
console.log("從相冊中選擇圖片:");  
    plus.gallery.pick( function(path){  
        console.log(path);  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    }, {filter:"image"} );  
}  
</script>  
</head>  
<body >  
從相冊中選擇圖片  
<br/>  
<button onclick="galleryImg()">選擇圖片</button>  
</body>  
</html> 

(4)、maximum: (Number 類型 )最多選擇的圖片數量。僅在支持多選時有效,取值範圍爲1到Infinity,默認值爲Infinity,即不限制選擇的圖片數。 如果設置的值非法則使用默認值Infinity。

平臺支持:Android - ALL (支持): 系統相冊文件選擇界面不支持設置選擇的圖片數量,爲了確保此功能可正常使用,應該設置system屬性值爲false強制使用5+統一相冊選擇界面。iOS - ALL (支持)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇多張圖片  
function galleryMaximum(){  
// 從相冊中選擇圖片  
console.log("從相冊中選擇多張圖片:");  
    plus.gallery.pick( function(e){  
        for(var i in e.files){  
        console.log(e.files[i]);  
        }  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    },{filter:"image",multiple:true,maximum:3,system:false});// 最多選擇3張圖片  
}  
</script>  
</head>  
<body >  
最多選擇的圖片數量  
<br/>  
<button onclick="galleryMaximum()">設置選擇的圖片數量</button>  
</body>  
</html>  

(5)、multiple: (Boolean 類型 )是否支持多選圖片。可從系統相冊中選擇多張圖片,選擇圖片後通過GalleryMultiplePickSuccessCallback回調返回選擇的圖片。

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
var r = null;  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇多張圖片  
function galleryImgs(){  
// 從相冊中選擇圖片  
console.log("從相冊中選擇多張圖片:");  
    plus.gallery.pick( function(e){  
        for(var i in e.files){  
        console.log(e.files[i]);  
        }  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    },{filter:"image",multiple:true});  
}  
</script>  
</head>  
<body >  
從相冊中選擇多張圖片  
<br/>  
<button onclick="galleryImgs()">選擇圖片</button>  
</body>  
</html>  

(6)、onmaxed: (Function 類型 )超過最多選擇圖片數量事件。使用相冊多選圖片時,可通過maximum屬性設置最多選擇的圖片數量,當用戶操作選擇的數量大於此時觸發此事件。平臺支持:Android - ALL (支持):系統相冊文件選擇界面不支持設置選擇的圖片數量,只有當用戶選擇的圖片數量超過最多圖片數是觸發,爲了確保此功能可正常使用,應該設置system屬性值爲false強制使用5+統一相冊選擇界面。 注意:此時顯示的相冊文件選擇界面,需要使用plus.nativeUI.*彈出提示框,否則可能無法正常顯示。iOS - ALL (支持)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇多張圖片  
function galleryOnmaxed(){  
// 從相冊中選擇圖片  
console.log("從相冊中選擇多張圖片:");  
    plus.gallery.pick( function(e){  
        for(var i in e.files){  
        console.log(e.files[i]);  
        }  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    },{filter:"image",multiple:true,maximum:3,system:false,onmaxed:function(){  
plus.nativeUI.alert('最多隻能選擇3張圖片');  
    }});// 最多選擇3張圖片  
}  
</script>  
</head>  
<body >  
超過最多選擇圖片數量事件  
<br/>  
<button onclick="galleryOnmaxed()">選擇圖片超數事件</button>  
</body>  
</html>  

(7)、popover: (PopPosition 類型 )相冊選擇界面彈出指示區域。對於大屏幕設備如iPad,相冊選擇界面爲彈出窗口,此時可通過此參數設置彈出窗口位置。 其爲JSON對象,格式如{top:”10px”,left:”10px”,width:”200px”,height:”200px”},所有值爲像素值,左上座標相對於容器的位置,默認彈出位置爲屏幕居中。

(8)、selected: (Array[ String ] 類型 )已選擇的圖片路徑列表。 僅在多圖片選擇時生效,相冊選擇界面將選中指定的圖片路徑列表。 如果指定的路徑無效,則忽略此項;如果指定的路徑數超過maximum屬性指定的最大選擇數目則超出的圖片不選中。

平臺支持:Android - ALL (支持): 系統相冊文件選擇界面不支持設置已選擇的圖片列表,爲了確保此功能可正常使用,應該設置system屬性值爲false強制使用5+統一相冊選擇界面。iOS - ALL (支持)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
var lfs=null;// 保留上次選擇圖片列表  
// 從相冊中選擇多張圖片  
function gallerySelected(){  
// 從相冊中選擇圖片  
console.log("從相冊中選擇多張圖片:");  
    plus.gallery.pick( function(e){  
        for(var i in e.files){  
lfs=e.files;  
        console.log(e.files[i]);  
        }  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    },{filter:"image",multiple:true,selected:lfs,maximum:3,system:false});// 最多選擇3張圖片  
}  
</script>  
</head>  
<body >  
已選擇的圖片路徑列表  
<br/>  
<button onclick="gallerySelected()">設置已選中的圖片</button>  
</body>  
</html>  

(9)、system: (Boolean 類型 )是否使用系統相冊文件選擇界面。設置爲true時,如果系統自帶相冊選擇控件時則優先使用,否則使用5+統一相冊選擇控件;設置爲false則不使用系統自帶相冊選擇控件,直接使用5+統一相冊選擇界面。默認值爲true。

平臺支持:Android - 2.3+ (不支持): Android4.0以上系統支持自帶相冊選擇控件。

iOS - 5.1+ (不支持): 不支持系統自帶相冊選擇控件,忽略此參數。

2.2、GalleryFilter: 相冊選擇文件過濾類型

屬性:

“image”: (String 類型 )僅可選擇圖片文件

“video”: (String 類型 )僅可選擇視頻文件

“none”: (String 類型 )不過濾,可選擇圖片或視頻文件

2.3、PopPosition: JSON對象,彈出拍照或攝像界面指示位置

屬性:

(1)、top: (String 類型 )指示區域距離容器頂部的距離,彈出拍照或攝像窗口指示區域距離容器頂部的距離,單位支持像素值(如”100px”)和百分比(如”50%”),如不寫單位則爲像素值值。

(2)、left: (String 類型 )指示區域距離容器左側的距離,彈出拍照或攝像窗口指示區域距離容器左側的距離,單位支持像素值(如”100px”)和百分比(如”50%”),如不寫單位則爲像素值。

(3)、width: (String 類型 )指示區域的寬度,彈出拍照或攝像窗口指示區域的寬度,單位支持像素值(如”100px”)和百分比(如”50%”),如不寫單位則爲像素值。

(4)、height: (String 類型 )指示區域的高度,彈出拍照或攝像窗口指示區域的高度,單位支持像素值(如”100px”)和百分比(如”50%”),如不寫單位則爲像素值。

3、回調方法
3.1、GalleryPickSuccessCallback: 單選系統相冊圖片成功的回調

void onSuccess( file ) {

// Success code

}

說明:系統相冊中單選圖片或視頻文件成功的回調函數,在選擇文件操作成功時調用。

參數:file: ( String ) 必選選擇的圖片或視頻文件路徑

返回值:void : 無

示例:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
var r = null;  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇單張圖片  
function galleryImg() {  
// 從相冊中選擇圖片  
console.log("從相冊中選擇圖片:");  
    plus.gallery.pick( function(path){  
        console.log(path);  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    }, {filter:"image"} );  
}  
</script>  
</head>  
<body >  
從相冊中選擇單張圖片  
<br/>  
<button onclick="galleryImg()">選擇圖片</button>  
</body>  
</html>  

3.2、GalleryMultiplePickSuccessCallback: 多選系統相冊圖片成功的回調

void onSuccess( event ) {

// Pick success

var files = event.files; // 保存多選的圖片或視頻文件路徑

}

說明:系統相冊中多選圖片或視頻文件成功的回調函數,在多選擇文件操作成功時調用。

參數:event: ( Event ) 必選 多選系統相冊返回數據,Event對象包含以下屬性: files - 字符串數組,保存多選的圖片或視頻文件路徑。

返回值:void : 無

示例:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>Gallery Example</title>  
<script type="text/javascript" >  
// 擴展API加載完畢後調用onPlusReady回調函數  
document.addEventListener( "plusready", onPlusReady, false );  
var r = null;  
// 擴展API加載完畢,現在可以正常調用擴展API  
function onPlusReady() {  
}  
// 從相冊中選擇多張圖片  
function galleryImgs(){  
// 從相冊中選擇圖片  
console.log("從相冊中選擇多張圖片:");  
    plus.gallery.pick( function(e){  
        for(var i in e.files){  
        console.log(e.files[i]);  
        }  
    }, function ( e ) {  
        console.log( "取消選擇圖片" );  
    },{filter:"image",multiple:true});  
}  
</script>  
</head>  
<body >  
從相冊中選擇多張圖片  
<br/>  
<button onclick="galleryImgs()">選擇圖片</button>  
</body>  
</html>  

3.3、GallerySuccessCallback: 操作系統相冊成功的回調

void onSuccess() {

// Success code

}

說明:系統相冊操作成功的回調函數,在保存文件到系統相冊操作成功時調用。

返回值:void : 無

3.4、GalleryErrorCallback: 系統相冊操作失敗的回調

void onError( error ) {

// Handle error

var code = error.code; // 錯誤編碼

var message = error.message; // 錯誤描述信息

}

說明:系統相冊操作失敗的回調函數,在選擇或保存圖片操作失敗時調用。

參數:error: ( Exception ) 必選 相冊操作失敗的錯誤信息,可通過error.code(Number類型)獲取錯誤編碼; 可通過error.message(String類型)獲取錯誤描述信息。

返回值:void : 無

發佈了44 篇原創文章 · 獲贊 11 · 訪問量 49萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章