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


    本文给出在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[n] = 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=" 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插件进行图片上传的时候遇到的问题及解决步骤。

  • 相关阅读:
    More Effective C++ 条款34 如何在一个程序中结合C++和C
    More Effective C++ 条款33 将非尾端(non-leaf classes)设计为抽象类(abstract classes)
    More Effective C++ 条款32 在未来时态下发展程序
    win10子系统Ubuntu18.04下安装图形界面
    转载:Intel MKL 稀疏矩阵求解PARDISO 函数
    免费电子书下载
    Parallel Studio XE 调用 BLAS95 + LAPACK95 + IMSL
    linux后台运行和关闭、查看后台任务
    (转载)nohup命令让Linux程序永远在后台执行
    Linux 基本系统信息查询
  • 原文地址:https://www.cnblogs.com/crazycode2/p/7776587.html
Copyright © 2020-2023  润新知