vue实现调取手机摄像头和相册功能

 更新时间:2021年09月29日 15:18:47   作者:心之所向,全是扯淡  
这篇文章主要为大家详细介绍了vue实现调取手机摄像头和相册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue实现调取手机摄像头和相册的具体代码,供大家参考,具体内容如下

自己总结的手机端拍照和相册原生的方法

HTML代码

<div>
//要显示的图片
  <div class="imgBox name">
      <img :src="imgSrc" />
  </div>
  <van-action-sheet v-model="show1">
   <ul>
    <li class="paizhao" @click="captureImage()">拍照</li>
    <li class="paizhao" @click="galleryImg()">从相册选择</li>
    <li class="paizhao" @click="quxiao()">取消</li>
   </ul>
  </van-action-sheet> 
</div>

js逻辑代码

//data里声明的变量
data(){
return{
 imgSrc: "", //展示的图片路径
      tupianlist: "", //展示的图片容器
 }
}

在methods事件方法定义事件名

methods:{
     // 从相册中选取图片
    galleryImg() {
      let This = this;
      console.log("从相册中选择图片:");
      plus.gallery.pick(function(path) {
        This.imgSrc = path; //path 是本地路径
        let img = new Image();
        img.src = path;
        img.onload = function(path) {
          var that = img;
          var w = that.width, //320
            h = that.height, //426
            scale = w / h;
          w = 320 || w;
          h = w / scale;
          var canvas = document.createElement("canvas");
          canvas.width = 300; //这个设置不能丢,否者会成为canvas默认的300*150的大小
          canvas.height = 300; //这个设置不能丢,否者会成为canvas默认的300*150的大小
          var ctx = canvas.getContext("2d");
          ctx.drawImage(that, 0, 0, 300, 300);
          var base64 = canvas.toDataURL(
            "image/png",
            "image/jpeg",
            "image/jpg",
            1 || 0.8
          );     
          This.tupianlist = base64;
          // console.log(This.tupianlist + "我是转码后的base");
 
  //这里可以请求接口
        };
      });
    },
    // 拍照
    captureImage() {
      let This = this;
      var cmr = plus.camera.getCamera(); //获取摄像头管理对象
      var res = cmr.supportedImageResolutions[0]; //字符串数组,摄像头支持的拍照分辨率
      var fmt = cmr.supportedImageFormats[0]; //字符串数组,摄像头支持的拍照文件格式
      // console.log("拍照分辨率: " + res + ", 拍照文件格式: " + fmt);
      cmr.captureImage(
        function(path) {
          plus.gallery.save(path, params => {
            let file = params.file;
            //编码为base64
            var img = new Image();
            img.src = file;
            img.onload = function() {
              var that = img;
              var w = that.width,
                h = that.height,
                scale = w / h;
              w = 320 || w;
              h = w / scale;
              var canvas = document.createElement("canvas");
              canvas.width = 300; //这个设置不能丢,否者会成为canvas默认的300*150的大小
              canvas.height = 300; //这个设置不能丢,否者会成为canvas默认的300*150的大小
              var ctx = canvas.getContext("2d");
              ctx.drawImage(that, 0, 0, 300, 300);
              var base64 = canvas.toDataURL(
                "image/png",
                "image/jpeg",
                "image/jpg",
                1 || 0.8
              );
              // console.log(base64);
              This.tupianlist = base64;
  //这里可以请求接口
            };
          });
          //进行拍照操作
          // 通过URL参数获取目录对象或文件对象
          plus.io.resolveLocalFileSystemURL(path, function(entry) {
            var tmpPath = entry.toLocalURL(); //获取目录路径转换为本地路径URL地址
            This.imgSrc = tmpPath;
            // alert("拍摄成功: " + tmpPath);
          });
        },
        function(error) {
          //捕获图像失败回调
          // alert("捕获图像失败: " + error.message);
        },
        { resolution: res, format: fmt }
      );
      this.show1 = false;
    },
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Vue Cli与BootStrap结合实现表格分页功能

    Vue Cli与BootStrap结合实现表格分页功能

    这篇文章主要介绍了Vue Cli与BootStrap结合实现表格分页功能,需要的朋友可以参考下
    2017-08-08
  • 详解vue服务端渲染浏览器端缓存(keep-alive)

    详解vue服务端渲染浏览器端缓存(keep-alive)

    在使用服务器端渲染时,除了服务端的接口缓存、页面缓存、组建缓存等,浏览器端也避免不了要使用缓存,减少页面的重绘。这篇文章主要介绍了详解vue服务端渲染浏览器端缓存(keep-alive),感兴趣的小伙伴们可以参考一下
    2018-10-10
  • 详解vue项目中实现图片裁剪功能

    详解vue项目中实现图片裁剪功能

    这篇文章主要介绍了vue项目中实现图片裁剪功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Vue状态管理工具Pinia的安装与使用教程

    Vue状态管理工具Pinia的安装与使用教程

    这篇文章主要介绍了Vue状态管理工具Pinia的安装与使用,一步一步学习如何将pinia运用到项目实战中去,文中有详细的安装教程和使用方法,并通过代码示例讲解的非常详细,需要的朋友可以参考下
    2024-03-03
  • Element-UI日期选择器(选择日期范围)禁用未来日期实现代码

    Element-UI日期选择器(选择日期范围)禁用未来日期实现代码

    我们在网页开发时通常需要用到一些日期组件来方便用户选择时间,其中element日期组件是一个非常好用的工具,这篇文章主要给大家介绍了关于Element-UI日期选择器(选择日期范围)禁用未来日期的相关资料,需要的朋友可以参考下
    2024-02-02
  • vue前端img访问鉴权后端进行拦截的代码示例

    vue前端img访问鉴权后端进行拦截的代码示例

    路由拦截是一种在用户访问特定页面之前对其进行拦截和处理的机制,下面这篇文章主要给大家介绍了关于vue前端img访问鉴权后端进行拦截的相关资料,需要的朋友可以参考下
    2024-03-03
  • Vue3中引入Pinia存储库使用示例详解

    Vue3中引入Pinia存储库使用示例详解

    这篇文章主要介绍了Vue3中引入Pinia存储库使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Vue-Ant Design Vue-普通及自定义校验实例

    Vue-Ant Design Vue-普通及自定义校验实例

    这篇文章主要介绍了Vue-Ant Design Vue-普通及自定义校验实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 浅谈vue 移动端完美适配方案

    浅谈vue 移动端完美适配方案

    最近接触了一个项目,vue怎么在不同屏幕上做根据不同屏幕大小适配,本文就详细的来介绍一下,感兴趣的可以了解一下
    2021-09-09
  • vue @click与@click.native,及vue事件机制的使用分析

    vue @click与@click.native,及vue事件机制的使用分析

    这篇文章主要介绍了vue @click与@click.native,及vue事件机制的使用分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论