您的位置:首页 > Web前端 > Vue.js

Vue.js 使用cordova camera插件调取相机

2017-11-03 09:10 831 查看
本文给出在vue.js里如何使用cordova的插件完成调取相机及图库,并完成图片上传的操作。
具体的操作步骤如下

第一步:在cordova项目下安装cordova-plugin-camera插件

cordova plugin add cordova-plugin-camera


第二步:在需要调取相机的地方,加入相关的代码

cameraTakePicture: function (mySourceType) {
navigator.camera.getPicture(this.onSuccess, this.onFail, {
quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
encodingType: Camera.EncodingType.JPEG,
sourceType: mySourceType
})
},


注意的问题:

1、sourceType:

PHOTOLIBRARY 或 0 打开照片库。
CAMERA 或 1 打开本机相机。
SAVEDPHOTOALBUM 或 2 打开已保存的相册。


2、destinationType

DATA_URL 或 0 返回base64编码字符串。
FILE_URI 或 1 返回图片文件URI。
NATIVE_URI 或 2 返回图片本机URI。


第三步:在上步完成图片拍摄之后,图片上传

由于后台采用的是阿里云的追加上传,接收的参数类型为File,因此,在上步得到的base64图片需要转换为File,

dataURLtoFile: function (dataurl, filename) {
var arr = dataurl.split(',')
var mime = arr[0].match(/:(.*?);/)[1]
var bstr = window.atob(arr[1])
var n = bstr.length
var u8arr = new Uint8Array(n)
while (n--) {
u8arr
= bstr.charCodeAt(n)
}
var blob = new Blob([u8arr], {type: mime})
blob.lastModifiedDate = new Date()
blob.name = filename
return blob
}


调用的方法如下

var file = this.dataURLtoFile('data:image/jpeg;base64,' + imageURI, 'test.jpeg')


imageURI是onSuccess函数的参数
至此,上传图片已经可以采用阿里云的追加上传完成了,具体的代码不附了

第四步:使用mintUI的popup完成点击弹出选择相机还是图库打开

首先,import {Popup} from 'mint-ui'

然后在components里加入Popup

最后在html里加入

<mt-popup v-model="popupVisible" position="bottom" style="width: 100%;">
<div>
<div class='popup-item' @click='TakePictureType(1)'>相机</div>
<div class='popup-item' @click='TakePictureType(2)'>图库</div>
</div>
</mt-popup>


其中,popupVisible控制是否弹出,position控制弹出的位置,里面的具体内容放在一个div里了
至此,完成了选择相机还是图库的操作。

第五步:打包apk,安装到手机上进行测试

以上就是在用cordova的camera插件进行图片上传的时候遇到的问题及解决步骤。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: