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的值无关了的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容