一,我们在使用html5的技术开发手机app时,并不能像IOS,Android那样可以调取手机原生的相机功能,这是我们就要借助一些插件来时实现。

二,安装Cordoba的相机插件

1、在文件目录下,使用命令安装相机插件,命令如下:

cordova plugin add cordova-plugin-camera

2、使用”camera.getPicture“函数来调取相机

camera.getPicture(successCallback, errorCallback, options)
successCallback相机调取成功的回调函数。
errorCallback相机调取失败的回调函数。
options:相机参数设置。参数如下表:
名称 类型 默认 描述
质量 number 50 保存的图像的质量,表示为0-100的范围,其中100通常是全分辨率,没有文件压缩损失。(请注意,关于相机分辨率的信息不可用。)
destinationType DestinationType FILE_URI 选择返回值的格式。
sourceType的 PictureSourceType CAMERA 设置图片的来源。
allowEdit Boolean true 选择前允许简单编辑图像。
编码类型 EncodingType JPEG 选择返回的图像文件的编码。
targetWidth number   以像素为单位的缩放图像的宽度 必须与...一起使用targetHeight。长宽比保持不变。
targetHeight number   以像素为单位的高度缩放图像。必须与...一起使用targetWidth。长宽比保持不变。
媒体类型 MediaType PICTURE 设置要从中选择的媒体类型。只有当作品PictureSourceTypePHOTOLIBRARY或者SAVEDPHOTOALBUM
correctOrientation Boolean   捕捉期间旋转图像以纠正设备的方向。
saveToPhotoAlbum Boolean   捕获后将图像保存到设备上的相册中。
popoverOptions CameraPopoverOptions   指定iPad中弹出位置的仅iOS选项。
cameraDirection Direction BACK 选择要使用的相机(正面或背面)。

相机参数配置属性如下:

Camera.DestinationType (文件类型):属性值如下,

Name Type Default Description
DATA_URL number 0 返回base64编码的字符串。数据URL可能会占用大量内存,导致应用程序崩溃或内存不足错误。如果可能,请使用FILEURI或NATIVE_URI
FILE_URI number 1 返回文件uri(内容:// media / external / images / media / 2 for Android)
NATIVE_URI number 2 返回本地uri(例如,asset-library://... for iOS)

Camera.EncodingType (图片类型设置): 属性值如下,

Name Type Default Description
JPEG number 0 返回JPEG编码的图像
PNG number 1 返回PNG编码的图像

Camera.MediaType(媒体类型设置) : 属性值如下,

Name Type Default Description
PICTURE number 0 只允许选择静止图像。默认。将返回通过DestinationType指定的格式
VIDEO number 1 只允许选择视频,只返回网址
ALLMEDIA number 2 允许从所有媒体类型中选择

Camera.PictureSourceType (图片来源设置): 属性值如下,

Name Type Default Description
PHOTOLIBRARY number 0 从图片库中选择图片(与Android的SAVEDPHOTOALBUM相同)
CAMERA number 1 从相机拍照
SAVEDPHOTOALBUM number 2

从图片库中选择图片(与Android的PHOTOLIBRARY相同)

Camera.PopoverArrowDirection(匹配iOS UIPopoverArrowDirection常量以指定弹出窗口上的箭头位置。) : 属性值如下,

Name Type Default
ARROW_UP number 1
ARROW_DOWN number 2
ARROW_LEFT number 4
ARROW_RIGHT number 8
ARROW_ANY number 15

Camera.Direction (相机摄像头设置): 属性值如下,

Name Type Default Description
BACK number 0 使用背面照相机
FRONT number 1 使用前置摄像头

例子:

// 打开相机
openCamera: function (selection) {
var srcType = Camera.PictureSourceType.CAMERA; // 只能从相机里取
var cameraOptions = uploadCtrl.setOptions(srcType); // 配置参数函数
navigator.camera.getPicture(uploadCtrl.cameraSuccess, uploadCtrl.cameraError, cameraOptions);
},
// 从相册获取图片
openFilePicker(selection){
var srcType = Camera.PictureSourceType.SAVEDPHOTOALBUM;
var pickerOptions = uploadCtrl.setOptions(srcType);
navigator.camera.getPicture(uploadCtrl.cameraSuccess, uploadCtrl.cameraError, pickerOptions);
},
// 相机调取成功成功
cameraSuccess(imageUri){
// console.log('调取成功')
uploadCtrl.createImg(imageUri);
},
// 相机调取失败
cameraError(error){
$$('.page[data-page="upload"] .imgUpload-overlay').removeClass('imgUpload-overlay-active'); // 选择器打开,遮罩层打开
var obj =$$('.page[data-page="upload"]').find('.'+uploadCtrl.imgType);
var index = uploadCtrl.imgType.substr(4);
uploadCtrl.uploadTypeCondition[index].hasImg = false;
obj.find('.img-item').removeClass('no'); // 上传模块隐藏
obj.find('.has-img').addClass('no');
if(error !=='Camera cancelled.' && error !=='no image selected' && error !=='Selection cancelled.'){ // 相机取消
myApp.alert('<span class="alertTip">'+error+'</span>',['']);
}
},
// 相机参数配置
setOptions(srcType){
var options = {
quality: 60,
destinationType: Camera.DestinationType.FILE_URI,//图片的base64编码
sourceType: srcType,
encodingType: Camera.EncodingType.jpg,
mediaType: Camera.MediaType.PICTURE,
allowEdit: false,
correctOrientation: true, //Corrects Android orientation quirks
saveToPhotoAlbum:false, // 不允许保存
};
return options;
},

使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能的更多相关文章

  1. Cordova or Xamarin 用.net开发IOS和Android程序

    Visual Studio 2015 和 Apache Cordova 在开始前,问一下自己下面这些问题: 熟练掌握web技术的开发者比例是多少?(占所有开发者的比例) 熟练掌握移动开发技术(并且使用 ...

  2. 使HTML5支持RTSP流 微信直播RTSP流 微信播放RTSP直播流(HTML5播放rtsp,web播放rtsp,微信支持rtsp)

    一.大家都知道HTML5的VIDEO可以播放视频,但是H5不支持RTSP播放,所以需要中间件! 二.我们经理长年的努力,开发了HTML5支持RTSP的中间件,使HTML5支持RTSP直播! 三.不卡顿 ...

  3. 在Ubuntu平台上创建Cordova Camera HTML5应用

    在这篇文章中,我们将具体介绍怎样使用Cordova Camera HTML5 应用.很多其它关于Cordova的开发指南,开发人员能够參考文章"the Cordova Guide" ...

  4. LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android

    LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...

  5. cordova程序加载pdf文件的2种方法(ios/android)

    前言 公司目前的前端架构是微信端由vue全家桶负责h5网站的单页应用,android端和ios端则选择cordova打包成apk和app.其中,有一个业务逻辑是点击某个链接进入pdf的展示,h5的方案 ...

  6. 【转】从开发者的角度看待各移动平台 ios/android/wp7/win8ost title

    T_T 这伪技术博客都快给写成Tron的读书笔记专栏了,这样可不行欸~ 如今正是移动平台的战国时期,厌烦了去讨论移动平台的未来,也无意于在HTML5和Native App之间纠结.本文只从开发者纯技术 ...

  7. Ionic中使用Chart.js进行图表展示以及在iOS/Android中的性能差异

    Angular Chart 简介 在之前的文章中介绍了使用 Ionic 开发跨平台(iOS & Android)应用中遇到的一些问题的解决方案. 在更新0.1.3版本的过程中遇到了需要使用图表 ...

  8. iOS/Android 浏览器(h5)及微信中唤起本地APP

    在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这是一个既直观又很好的用户体验,但在实现过程中会遇到各种问题: ...

  9. fir.im Weekly - iOS/Android 应用程序架构解析

    假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 本期 fir.im Weekly 收集了关于  iOS/Android 开发资源,也加入了一些关于 Web 前端方面的分 ...

随机推荐

  1. springboot 依赖

    <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot ...

  2. 洛谷P2015 二叉苹果树(树状dp)

    题目描述 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点) 这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号来 ...

  3. 工程师技术(六):Linux工程师 综合测试

    一.Linux工程师 综合测试 目标: 根据本文提供的练习步骤完成所有练习案例. 方案: 开始练习之前,先依次重置虚拟机环境. [root@room9pc13 ~]# rht-vmctl  reset ...

  4. CF446D DZY Loves Games

    CF446D DZY Loves Games 高斯消元好题 如果暴力地,令f[i][k]表示到i,有k条命的概率,就没法做了. 转化题意 生命取决于经过陷阱的个数 把这个看成一步 所以考虑从一个陷阱到 ...

  5. 如何用python读写CSV 格式文件

    工作中经常会碰到读写CSV文件的情况.记录下,方便自己以后查询并与大家一起分享: 写CSV文件方法一: import csv          #导入CSV with open("D:\eg ...

  6. FATFS模块应用笔记

    FATFS模块应用笔记 如何港 范围 内存使用 模块尺寸缩小 长文件名 统一的API 重入 复制文件访问 性能有效文件访问 对闪存介质考虑 关键的第 延长使用FATFS API 关于FATFS许可证 ...

  7. Webx.0-Web2.0:Web2.0

    ylbtech-Webx.0-Web2.0:Web2.0 Web2.0 是相对于Web1.0 的新的时代.指的是一个利用Web的平台,由用户主导而生成的内容互联网产品模式,为了区别传统由网站雇员主导生 ...

  8. 常用命令--mount

    mount -o remount,rw / mount 命令 [-t 文件系统] [-L 卷标名] [-o 特殊选项] 设备文件名 挂载点 -l   查询系统中已经挂载的设备,-l 会显示卷标 -a ...

  9. Zabbix Server 和 Zabbix Agentd 开机自动运行

    Zabbix Server 和 Zabbix Agentd 开机自动运行 请问:怎样 Zabbix Server 和 Zabbix Agentd 开机自动运行? 注:如果你的命令行写进了 /etc/r ...

  10. Codeforces 488C Fight the Monster

    Fight the Monster time limit per test             1 second                                   memory ...