该篇主要讲述cordova如何调用相机。
1、Cordova调用相机的api
Cordova框架提供了两个用于访问设备相机的API,一个是Camera API,它使用开发者能直接访问本地相机的API,另一个是Media Capture API。
两者区别:Camera API只用相机获取图像,而Media Capture API不仅能获取图像,还可以录视频或者录音。
2、安装插件
cordova plugin add cordova-plugin-camera
3、调用方法
var cameraOptions= {
quality : 75,
destinationType : Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.CAMERA,
allowEdit : true,
encodingType : Camera.EncodingType.JPEG,
targetWdith : 100,
targetHeight : 100,
popoverOptions : CameraPopoverOptions,
saveToPhotoAlbum : false
};
navigator.camera.getPicture(onCameraSuccess, onCameraError, cameraOptions);
function onCameraSuccess(imageURI){
$('#img_pic').attr("src","data:image/jpeg;base64," + imageURI);
}
function onCameraError(message) {
alert('Failed because: ' + message);
}
4、官方参数列表
属性 | 描述 |
---|---|
allowEdit | 布尔值,照片在返回Cordova应用之前用户是否可以编辑,但并不是所有移动平台都支持。 |
cameraDirection | 数值型,规定使用前面或后面的相机。navigator.camera.Direction.FRONT和navigator.camera.Direction.BACK分别指前面和后面。 |
correctOrientation | 布尔值,告诉API在拍照时旋转图像来调整设备方向。 |
destinationType | 布尔值,照片在返回Cordova应用之前用户是否可以编辑,但并不是所有移动平台都支持。 |
cameraDirection | 数值型,规定API怎样返回照片。Camera.DestinationType.FILE_URI是默认选项前边提到过,Camera.DestinationType.DATA_URL,返回用base-64编码的图像,Camera.DestinationType.NATIVE_URI, 返回图像的本地的URI。注意使用DATA_URL,因为js不处理用字符编码的图像,可能会使用js应用崩溃。 |
encodingType | 数值型,指明图像输出格式。Camera.EncodingType.JPEG让API返回JPEG图像。 |
mediaType | 数值型,当SoruceType设置为PHOTOLIBRARY或SAVEDPHOTOALBUM,规定了用户可选择什么类型的文件。使用Camera.MediaType.PICTURE时只允许选择图像,Camera.MediaType.VIDEO允许选择视频文件,Camera.MediaType.ALLMEDIA允许选择任何支持的媒体文件。选择VIDEO时,API只返回文件的URI;如果是图像会返回信息,它的格式请参考destinationType。 |
quality | 数值型,用从0到100%的百分比来控制图像的质量,100表示不经过压缩。 |
saveToPhotoAlbum | 布尔值,指示API在拍照后把图像保存到设备照片相册中。 |
sourceType | 数值型,指明图像来源。可能值有Camera.PictureSourceType.CAMERA(默认值),或者Camera.PictureSourceType.PHOTOLIBRARY、Camera.PictureSourceType.SAVEDPHOTOALBUM。选项的行为会根据应用运行的平台不同而不同,像有些平台没有photo libraries或photo albums。 |
targetHeight | 数值型,用来设定获得的图像的高度。 |
targetWidth | 数值型,用来设定获得的图像的宽。 |
5、注意
用户在返回给Cordova应用的是一张图像,但可能拍了不止一张。Cordova有一个cleanup方法用来清理这种图像。调用这个方法并且传入成功和失败的回调函数名作为参数,如下:
navigator.camera.cleanup(onCameraCleanupSuccess, onCameraCleanupError);
调用手机相机,除了用cordova调取,我们还可以用HTML5的api.