cordova攝像頭插件

寫在前面(2017-11-03):現在在做Python研發,cordova早已忘卻,尤其是技術細節,大家問我我也不會了,還請見諒!

Cordova相機插件中文翻譯

? ? ? ? ? 這個插件定義了一個全局對象navigator.camera,它用來提供拍照和從系統相冊里選取圖片的API。


安裝:

1.需要最新的cordova 5.0:

cordova plugin add cordova-plugin-camera

2.通過ID安裝舊版本的cordova

cordova plugin add org.apache.cordova.camera

3.當然,也可以通過下載直接添加:(不穩定)

cordova plugin add https://github.com/apache/cordova- plugin-camera.git


怎么Contribute?(省略)


該文件由npm生成


提供的API

.camera

? ? ? 。.getPicture(successCallback,errorCallback,options)

? ? ? 。cleanup()

? ? ? 。onError:函數

? ? ? 。onSuccess:函數

? ? ? 。CameraOptions:對象

.Camera

? ? ? 。DestinationType:枚舉

? ? ? 。EncodingType:枚舉

? ? ? 。MediaType:枚舉

? ? ? 。PictureSourceType:枚舉

? ? ? 。PopoverArrowDirection:枚舉

? ? ? 。Direction:枚舉

.CameraPopoverHandle

.CameraPopoverOptions




camera


1.camera.getPicture(successCallback, errorCallback, options)

通過相機或者設備的相冊獲取到圖片,如果傳遞成功會回調一個Base64編碼的字符串或者圖像文件的URI(統一資源標識符)。

camera.getPicture這個函數會打開設備的默認攝像頭,允許用戶在默認情況下拍攝圖片,當Camera.sourceType等于Camera.PictureSourceType.CAMERA,就會掉用攝像頭。一旦用戶獲取到了圖片,相機程序關閉并且恢復原程序。

當Camera.sourceType是Camera.PictureSourceType.PHOTOLIBRARY或Camera.PictureSourceType.SAVEDPHOTOALBUM的話,會跳到系統相冊讓用戶選擇圖片。

當camera.getPicture函數返回一個CameraPopoverHandle對象,它可用于重新設定圖像選擇對話框,例如,設備方向改變時。

返回值被發送到cameraSuccess回調函數,然后可以在cameraOptions中指定它們:

? ? ? .一個字符串包含base64編碼的照片圖像

? ? ? .一個字符串表示圖像文件的本地儲存位置(URL)

你可以對base64編碼的字符串或者URI做任何事兒,比如說:

? ? ?.讓這個圖片成為一個<img>,就像下面的例子一樣

? ? ?.存儲在本地(LocalStorage,Lawnchair等等)

? ? ?.把它傳給遠程服務器

注:新設備的照片像素很高,從設備相冊選取的圖片不會被縮減質量(甚至它已經指定了分辨率),為了內存問題,設置Camera.destinationType為FILE_URI而不是DATA_URL。

支持平臺

安卓,黑莓10,瀏覽器,火狐os,亞馬遜os,iOS,windows,wp8,ubuntu

類型:相機的靜態方法:

參數----------------------------類型-----------描述----

successCallback-----------------onSuccess------ ? ? ? ?----

errorCallback-------------------onError-------- ? ? ? ? ?----

options------------------------CameraOptions--CameraOptions-

例子:

navigator.camera.getPicture(cameraSuccess, cameraError, cameraOptions);


2.camera.cleanup()

移除掉用camera.getPicture函數之后的本地儲存,只有Camera.sourceType的值等于Camera.PictureSourceType.CAMERA和Camera.destinationType等于Camera.DestinationType.FILE_URI的時候會掉用。

支持平臺:iOS

類型:相機的靜態方法

示例:

navigator.camera.cleanup(onSuccess, onFail);

functiononSuccess() {

console.log("Camera cleanup success.")

}

functiononFail(message) {

alert('Failed because: '+message);

}


3.camera.onError :(函數)

回調一條錯誤信息

類型:相機的靜態方法

參數--------------------------類型-----------------------------描述

message------------------------string-------------------------由原生代碼提供


4.camera.onSuccess:(函數)

回調圖像的數據

類型:相機的靜態方法

參數--------------類型-----------------------------描述

imageData---------string------基于cameraOptions的圖像Base64編碼或者圖像文件的URI

示例:

// Show image

//

functioncameraCallback(imageData) {

varimage=document.getElementById('myImage');

image.src="data:image/jpeg;base64,"+imageData;

}


5.camera.CameraOptions :對象

可選參數自定義相機設置。

類型:相機的靜態方法

特性表:

變量名-類型-默認值-描述(不知道怎么在簡書創建表格,蛋疼)

quality--number--50--圖像的保存質量,范圍0-100,100是最大值,最高的分辨率,沒有任何壓縮損失(請注意有關該相機的分辨率信息不可用。)

destinationType--DestinationType--FILE_URI--選擇返回值的格式

sourceType--PictureSourceType--CAMERA--設置圖像來源

allowEdit--Boolean--true--允許在選擇圖片之前進行簡單的編輯

encodingType--EncodingType--JPEG--選擇圖像的返回編碼

targetWidth--number--空--寬度像素用來縮放圖像。必須和targetHeight一起使用。長寬比保持不變。

targetHeight--number--空--長度像素用來縮放圖像。必須和targetWidth一起使用。長寬比保持不變。

mediaType--MediaType--PICTURE--選擇media類型。它只適用PictureSourceType是PHOTOLIBRARY或SAVEDPHOTOALBUM。

correctOrientation--Boolean--空--如果是橫向拍攝的照片,會自動旋轉

saveToPhotoAlbum--Boolean--空--拍攝的圖像是否保存在設備的系統相冊

popoverOptions--CameraPopoverOptions--空--設定在ipad的popover的位置

cameraDirection--Direction--BACK--選擇前置攝像頭或者后面的攝像頭




Camera


1.Camera.DestinationType :枚舉

類型:相機的靜態枚舉屬性

特性:

變量名-類型-默認值-描述

DATA_URL--number--0--返回Base64編碼的字符串

FILE_URI--number--1--返回文件的URI(content://media/external/images/media/2 for Android)

NATIVE_URI--number--2--返回原生URI (eg. asset-library://... for iOS)



2.Camera.EncodingType :enum

類型:相機的靜態枚舉屬性

特性:

變量名-類型-默認值-描述

JPEG--number--0--返回JPEG的圖片

PNG--number--1--返回PNG的圖片


3.Camera.MediaType :enum

類型:相機的靜態枚舉屬性

特性:

變量名-類型-默認值-描述

PICTURE--number--0--允許選擇靜態影像。 默認。將通過DestinationType返回指定格式

VIDEO--number--1--允許選擇視頻,只返回網址

ALLMEDIA--number--2--允許返回所有媒體格式


4.Camera.PictureSourceType :enum

類型:相機的靜態枚舉屬性

特性:

變量名-類型-默認值-描述

PHOTOLIBRARY--number--0--從設備相冊選擇圖片

CAMERA--number--1--用攝像頭拍攝圖片

SAVEDPHOTOALBUM--number--2--從設備相冊選擇圖片(一個應該是ios一個安卓)


5.Camera.PopoverArrowDirection :enum

匹配的iOS UIPopoverArrowDirection在popover固定的箭頭位置。

類型:相機的靜態枚舉屬性

特性:

變量名-類型-默認值

ARROW_UP--number--1

ARROW_DOWN--number--2

ARROW_LEFT--number--4

ARROW_RIGHT--number--8

ARROW_ANY--number--15


6.Camera.Direction :enum

類型:相機的靜態枚舉屬性

特性:

變量名-類型-默認值-描述

BACK--number--0--使用后置攝像頭

FRONT--number--1--使用前置攝像頭


7.CameraPopoverOptions

iOS特供,從iPad的系統相冊選擇圖片,指定popover的定位元素的位置箭頭方向和參數。需要注意的是popover的尺寸可以改變,以適應屏幕的箭頭和取向方向。確保指定元素位置時考慮方向變化。

變量名-類型-默認值-描述

[x]--number--0--屏幕選取框的x坐標

[y]--number--32--屏幕選取框的y坐標

[width]--number--320--屏幕選取框的寬度

[height]--number--480--屏幕選取框的高度

[arrowDir]--PopoverArrowDirection--ARROW_ANY--確定popover的指向


8.CameraPopoverHandle

圖片選擇框的句柄

支持平臺:iOS

示例:

varcameraPopoverHandle=navigator.camera.getPicture(onSuccess, onFail,

{

destinationType:Camera.DestinationType.FILE_URI,

sourceType:Camera.PictureSourceType.PHOTOLIBRARY,

popoverOptions:newCameraPopoverOptions(300,300,100,100, Camera.PopoverArrowDirection.ARROW_ANY)

});

// Reposition the popover if the orientation changes.

window.onorientationchange=function() {

varcameraPopoverOptions=newCameraPopoverOptions(0,0,100,100, Camera.PopoverArrowDirection.ARROW_ANY);

cameraPopoverHandle.setPosition(cameraPopoverOptions);

}


9.camera.getPicture ?勘誤表

示例

照一張照片并且獲取Base64編碼后的圖像:

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,

destinationType: Camera.DestinationType.DATA_URL

});

function onSuccess(imageData) {

var image = document.getElementById('myImage');

image.src = "data:image/jpeg;base64," + imageData;

}

function onFail(message) {

alert('Failed because: ' + message);

}

照一張照片并獲取圖像文件的位置:

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,

destinationType: Camera.DestinationType.FILE_URI });

function onSuccess(imageURI) {

var image = document.getElementById('myImage');

image.src = imageURI;

}

function onFail(message) {

alert('Failed because: ' + message);

}

。特殊(iOS)

CameraUsesGeolocation(布爾值,默認為false)。對于拍攝JPEG文件,設置為true來獲得地理定位數據的EXIF頭。這將觸發對地理位置權限的請求,如果設置為true。

(下面省略了其他操作系統的特殊情況,只顯示ios和安卓的)

。Android

安卓在低端機上調用Cordova這個插件的時候可能會被強制關掉。在這種情況在,插件的調用結果會通過resume事件。有關更多信息,請參見Android生命周期指南。pendingResult這個函數將會傳遞給回調函數一個值(URI / URL或錯誤消息)。pendingResult.pluginStatus是用來判斷調用插件是否成功的。

。iOS

包含alert()的回調函數會發生問題,內置警報器setTimeout()允許在完全關閉警報之前顯示圖像采集窗口


10.CameraOptions勘誤表(同樣只翻譯iOS和安卓)

。安卓

? ? ? ? .后置攝像頭包括任何cameraDirection的結果值

? ? ? ? .allowEdit這個在安卓上運行結果未知,不建議使用!這個插件在作用本來是為了實現用戶在設備上裁剪圖像,但是用戶可能會有不兼容的操作,導致這個插件崩潰。這個插件其實在大部分設備上是支持的,因為兼容(Google Plus Photos)這個插件,但是強制使用并不明智。如果這個功能對于你來說是很重要的,可以考慮其他的第三方插件,它們的功能一般很強大。

? ? ? ? .Camera.PictureSourceType.PHOTOLIBRARY和Camera.PictureSourceType.SAVEDPHOTOALBUM顯示的都是設備的系統相冊

? ? ? ? .如果圖像未編輯(quality=100,correctOrientation=false,沒有targetHeight或targetWidth指定),忽略encodingType,獲取到的圖片的編碼是系統默認的。

。iOS

? ? ? ? .當使用destinationType/FILE_URI時,照片保存在應用程序的臨時目錄中。當應用程序結束,這個臨時存儲會被刪除。

? ? ? ? .當使用了destinationType.NATIVE_URI和sourceType.CAMERA,照片是否出存在系統相冊是和saveToPhotoAlbum的值無關了的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容