使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能
一,我们在使用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
|
设置要从中选择的媒体类型。只有当作品PictureSourceType 是PHOTOLIBRARY 或者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
|
|
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 quirkssaveToPhotoAlbum:false, // 不允许保存 };return options;},
转载于:https://www.cnblogs.com/zuoan-oopp/p/8006778.html
使用cordova,使html5也能像IOS,Android那样可以 调取手机的相机拍照功能相关推荐
- 适用ios,android,wp等平台手机emoji表情符号兼容方案
一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里 ...
- android支付宝插件,GitHub - DmcSDK/cordova.plugin.alipay: cordova 支付宝支付插件,支持IOS Android。...
cordova.plugin.alipay cordova 支付宝支付插件 cordova plugin add https://github.com/DmcSDK/cordova.plugin.al ...
- html选择本地文件视频并播放器,使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file)...
使HTML5视频播放器播放不同的文件(Make a HTML5 video player play a different file) 在播放视频时,我无法让HTML5播放器播放不同的视频,我尝试更改 ...
- LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android
LocalResizeIMG前端HTML5本地压缩图片上传,兼容移动设备IOS,android jincon 发表于 2015-02-26 18:31:01 发表在: php开发 localresiz ...
- html5实现ios长按图标后进入图标排序及删除功能的效果
2019独角兽企业重金招聘Python工程师标准>>> html5实现ios长按图标后进入图标排序及删除功能的效果 我们知道在ios(国产定制安卓系统基本都有)设备上按下图标,图标就 ...
- Cordova打包的Vue项目在IOS无法拉起支付宝和微信支付
背景 在用Cordova打包Vue项目并添加IOS平台时,在服务器后台没有报异常,且支付宝以及微信的调用的链接在 浏览器中能正常调用时,此时查看Cordova项目下的config.xml文件. 解决 ...
- 定义视频尺寸html,使HTML5视频海报与视频本身尺寸相同
有谁知道如何调整HTML5视频海报的大小,使其适合视频本身的确切尺寸?使HTML5视频海报与视频本身尺寸相同 这里是代码: HTML: CSS: video{ border:1px solid r ...
- html音频兼容ios,Safari和iOS上的Html5(音频)(Html5 (audio) on Safari iOS)
Safari和iOS上的Html5(音频)(Html5 (audio) on Safari & iOS) 我正在开发一个Web应用程序,并且在PC上有Apple设备和Safari的兼容性问题. ...
- html5屏蔽ios长按复制,html5+CSS 实现禁止IOS长按复制粘贴功能
html5+CSS 实现禁止IOS长按复制粘贴功能 因为在移动端APP需要实现长按执行别的事件,但是在iOS系统有默认的长按选择复制粘贴,禁止此功能在网上找了很多资料,最终整理出目前最好的解决方法. ...
- H5移动端ios/Android兼容性总结
先说一下viewport 先上模板 <meta charset="utf-8"> <!--主要I是强制让文档的宽度与设备宽度保持1:1,最大宽度1.0,禁止屏幕缩 ...
最新文章
- Python Socket Programming
- python三种数据类型详解_最全面的Python数据类型知识点讲解
- hibernate jpa_JPA / Hibernate:基于版本的乐观并发控制
- 震惊!微软小冰公众号被封?示好国内,苹果拟推出特色版iPhone;谷歌更新Google Play支持名单:华为荣耀多款在列……...
- Linux系统编程:习题,父子进程通过信号通信,实现交替数数
- C++ 重载赋值运算符与11选5平台修复
- linux系统启动故障排除
- python 3.9 性能_Python 3.9 性能优化:更快的 list()、dict() 和 range() 等内置类型
- git管理github仓库详解
- 设置表格表头字体_Excel双栏和三栏斜线表头制作技巧
- 菜鸟的系统架构师如何应对交易系统激增的系统流量
- 数据库中ER图(一对多、一对一、多对多)讲解
- 《活出生命的意义》阅读笔记
- java中jlaber用法_laber的for属性
- 2019,关于我的故事
- OOM ResourceExhaustedError
- 孩子数学成绩不好怎么办_小孩子数学差怎么办
- 【U8+】用友登录账套年度提示以前版本的数据,请使用系统管理升级。
- 计算机软考高级职称论文,关于计算机软考,这里可以解决你所有的问题
- 新型复读机——微信语音