input调用手机摄像头实现拍照功能vue

news/2024/7/8 12:04:03 标签: vue.js, 前端

项目需要一个拍照功能,实现功能如下图所示:若使用浏览器则可以直接上传图片,若使用手机则调用手机摄像头拍照。

在这里插入图片描述
在这里插入图片描述

1.代码结构

<!--input标签-->
<input ref="photoRef"
        type="file"
        accept="image/*"
        capture="environment"
        @change="handleImageCapture"
        style="display:none">
 <!-- 照片框-->
 <div class="photo-box">
     <!-- 拍照 -->
     <div v-if="cameraShow" @click="cameraClick" class="camera-box">
         <img src="@/assets/img/camera.png" alt="" class="camera-icon">
         <div class="text">点击拍摄照片</div>
     </div>
     <!-- 照片 -->
     <div v-else class="picture-box">
         <span @click="deletePic">
             <i class="el-icon-close"></i>
         </span>
         <img id="photoImg" src="" alt="">
     </div>
 </div>

2.操作函数

/**
 * 相机点击事件
 */
cameraClick() {
    this.$refs.photoRef.dispatchEvent(new MouseEvent('click'));
},

/**
 * 上传照片事件
 */
handleImageCapture(event) {
    if (event.target.files.length === 0) {
        return;
    }
    this.$store.commit('SET_CAMERA_SHOW', false)
    let file = event.target.files[0];

    //在页面展示图片
    this.showPhoto(file)

    this.$store.commit('SET_PHOTO_FILE', file)
},

/**
 * 在页面展示照片
 */
showPhoto(file) {
    let reader = new FileReader();
    reader.onload = function (e) {
        let img = document.getElementById('photoImg');
        img.src = e.target.result;
    };
    reader.readAsDataURL(file);
},

/**
 * 删除照片
 */
deletePic() {
    this.$store.commit('SET_CAMERA_SHOW', true)
    this.$store.commit('SET_PHOTO_FILE', null)
}

http://www.niftyadmin.cn/n/5537197.html

相关文章

efibootmgr 命令及其用途

efibootmgr 是一个在基于 UEFI 的系统上用于管理 EFI 引导项的工具。它允许用户查看、创建、删除和修改 EFI 引导项。以下是一些常见的 efibootmgr 命令及其用途&#xff1a; 查看当前引导项 sudo efibootmgr这个命令会列出所有当前配置的 EFI 引导项。 添加新的引导项 假设…

在C++中内存泄露的几种情况及解决内存泄露和指针越界有哪些方法?

一、在C中&#xff0c;内存泄露通常指的是程序在动态分配内存后未能正确地释放这些内存&#xff0c;导致系统资源被持续占用而无法被其他程序或该程序的后续部分使用。以下是C中内存泄露的几种常见情况&#xff0c;按照不同的原因进行分类和归纳&#xff1a; 忘记释放内存&…

海外金融机构银行保险证券数字化转型营销销售数字化成功案例讲师培训师讲授开户销售营销客户AI人工智能创新思维

金融机构需要数字营销的主要原因 数字银行、直接存款和移动网络的兴起让客户无需前往当地分行即可轻松办理银行业务。这些举措不仅提升了用户体验&#xff0c;也迫使银行向数字化世界迈进。 金融服务公司需要在数字营销渠道上保持稳固的地位&#xff0c;以免落后于大型机构。…

【高考】【填志愿】分数限制下,选好专业还是选好学校?

【高考】选专业时&#xff0c;应避免的误区-CSDN博客 【高考】选专业时以什么为主&#xff1f;-CSDN博客 分数限制下&#xff0c;选好专业还是选好学校&#xff1f;-CSDN博客 分数限制下&#xff0c;选好专业还是选好学校&#xff1f;-CSDN博客 分数限制下&#xff0c;选好专…

专业的酱酒鉴评方法及要求

在探讨酱酒鉴评的领域&#xff0c;我们不仅需要关注鉴评的基本方法&#xff0c;还要深入了解品评环境的设置、品酒杯的选择以及品酒员的专业素质。这些因素共同构成了酱酒鉴评的完整体系&#xff0c;确保了鉴评结果的科学性和准确性。 酱酒鉴评的基本方法 酱酒鉴评主要依赖于…

C语言_指针初阶(进阶还在更新中)

指针是什么 指针是内存中一个最小单元的编号&#xff0c;也就是地址平时口语中说的指针&#xff0c;通常指的是指针变量&#xff0c;是用来存放内存地址的变量指针就是地址&#xff0c;口语中说的指针通常指的是指针变量。我们可以通过&&#xff08;取地址操作符&#xff…

简单的手动实现spring中的自动装配案例

简简单单的实现一个spring中的自动装配和容器管理的小骚操作。 1&#xff0c;创建AutoSetBean.java 使用injectBeans静态方法&#xff0c;可以扫描指定包下的所有带MyInject注解的字段&#xff0c;如果在beans的Map中存在这个字段的实例化类&#xff0c;则执行装配。 import…

vue this.$refs加变量名

想动态获取$refs&#xff0c;我们可以用模板字符串来动态绑定ref的值。代码如下&#xff1a; this.$refs[${this.treeQueFlag}].setCheckedNodes([]); $refs后面拼变量&#xff0c;vue动态给$refs赋值_vue ref动态赋值-CSDN博客