参考文档:MediaDevices.getUserMedia() - Web API 接口参考 | MDN

vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式 - 会写代码的赖先生 - 博客园

使用vue-cropper裁剪图片

参考文档:Vue使用vue-cropper裁剪图片_hql1024的博客-CSDN博客

史上最全基于vue的图片裁剪vue-cropper使用_DT辰白-CSDN博客_vue-cropper

<template><div><!--开启摄像头--><img @click="callCamera" :src="headImgSrc" alt="摄像头" /><!--canvas截取流--><canvas ref="canvas" width="640" height="480"></canvas><!--图片展示--><video ref="video" width="640" height="480" autoplay></video><!--确认--><el-button size="mini" type="primary" @click="photograph"></el-button></div>
</template>
<script>
export default {data() {return {headImgSrc: require("@/assets/image/photograph.png"),};},methods: {// 调用摄像头callCamera() {// H5调用电脑摄像头API//navigator.mediaDevices.getUserMedia 调用后 会提示用户给予使用媒体输入的许可.返回一个 Promise 对象,//成功后会resolve回调一个 MediaStream 对象。//在移动设备上面调用摄像头也可以通过此种方式,如下的例子表示优先使用前置摄像头//{ audio: true, video: { facingMode: "user" } }前摄像头//{ audio: true, video: { facingMode: { exact: "environment" } } }强制使用后置摄像头//设置获取接近 1280x720 的相机分辨率//{ audio: true, video: { width: 1280, height: 720 } };navigator.mediaDevices.getUserMedia({audio: true,//调用音频video: true, //说明请求的媒体类型。调用视频}).then((success) => {// 摄像头开启成功this.$refs["video"].srcObject = success; //src 是播多媒体文件的;srcobj 是实时流// 实时拍照效果this.$refs["video"].play();}).catch((error) => {//用户拒绝console.error("摄像头开启失败,请检查摄像头是否可用!");});},// 拍照photograph() {let ctx = this.$refs["canvas"].getContext("2d");// 把当前视频帧内容渲染到canvas上ctx.drawImage(this.$refs["video"], 0, 0, 640, 480);//canvas图片 转base64格式、图片格式转换、图片质量压缩//语法 canvas.toDataURL(type, encoderOptions); 设置转换的图片格式、图片质量压缩let imgBase64 = this.$refs["canvas"].toDataURL("image/jpeg", 0.7); let str = imgBase64.replace("data:image/jpeg;base64,", "");let strLength = str.length;let fileLength = parseInt(strLength - (strLength / 8) * 2); //let size = (fileLength / 1024).toFixed(2);// 由字节转换为KB 判断大小 console.log(size); //图片大小},// 关闭摄像头closeCamera() {if (!this.$refs["video"].srcObject) {return;}//MediaStream 接口的getTracks() 方法会返回一个包含媒体流中所有媒体对象let stream = this.$refs["video"].srcObject;let tracks = stream.getTracks();tracks.forEach((track) => {track.stop();});this.$refs["video"].srcObject = null;},},
};
</script>

vue pc端调用摄像头进行拍照并实现裁剪上传相关推荐

  1. PC端调用摄像头并拍照

    该博主的方法在mac本子上测试成功.原文连接: https://juejin.cn/post/6955290885806358564

  2. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template><div><!--开启摄像头 ...

  3. PC端调用摄像头扫描二维码,拿到二维码信息

    PC端调用摄像头扫描二维码,拿到二维码信息 <template><el-dialogtitle="扫描设备二维码":visible.sync="dial ...

  4. vue移动端页面调用手机拍照_vue实现PC端调用摄像头拍照、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式...

    export default { () { return {} }, methods: { # // 压缩图片 and 旋转角度纠正 下方代码 # 需要自行去掉 个人只作为着色效果加上 compres ...

  5. JS PC端调用摄像头录视频截图上传文件

    创建 Catcher 类 class Catcher {URL; // 上传地址dataStream; // 流数据mediaStream; //媒体流mediaRecorder; //录制对象sta ...

  6. Vue调用摄像头录制视频和音频并上传给后端或下载到本地

    下载插件 npm install --save webm-duration-fix 代码及作用 调用摄像头 callCamera () {let _this = this;MediaUtils.get ...

  7. vue 调用pc端本地摄像头、麦克风实现拍照、录视频、录音 并上传到服务器指定树文件夹

    vue 调用pc端本地摄像头.麦克风实现拍照.录视频.录音 并上传 自己写blog只是为了下次方便使用 过程确实很烦 ,自己摸索加各大网站cv查看 可以直接使用 1.调用摄像头拍照 录屏 首先是npm ...

  8. vue中如何调用ios摄像头_如何使用Vue2.0调用摄像头进行拍照

    这次给大家带来如何使用Vue2.0调用摄像头进行拍照,使用Vue2.0调用摄像头进行拍照的注意事项有哪些,下面就是实战案例,一起来看一下. import {Exif} from './exif.js' ...

  9. 摄像头自建html直播,html5调用摄像头实现拍照

    html5调用摄像头实现拍照 拍照 var video=document.getElementById("video"); var context=canvas.getContex ...

  10. vue PC 端使用腾讯地图定位

    vue PC 端使用腾讯地图定位 需求:希望网站显示当前城市 腾讯前端定位组件 解决的方法 定义一个文件,加载定位js 在vue页面中使用 需求:希望网站显示当前城市 腾讯前端定位组件 key的申请, ...

最新文章

  1. 【客户下单】前端系统Action数据封装
  2. 什么是DQL、DML、DDL、DCL
  3. python 制作二进制文件数据集(bin)
  4. Oracle之例外(异常)
  5. 云筑网认证_云筑网集采平台怎么录入分包单位
  6. PHP距离春节还剩多少天,2019年春节倒计时 现在距离2019年春节还有多少天 - 中国万年历...
  7. php文件下载IE文件名乱码问题
  8. html 块级注释,HTML blockquote 标签 | 教程 | codingbefore
  9. 拦截导弹(CDQ分治,DP)
  10. Unity3D脚本语言的类型系统
  11. bitvise一个非常好用的ssh软件
  12. python面向对象游戏_【Python之旅】第四篇(四):基于面向对象的模拟人生游戏类...
  13. 隐藏IIS响应头信息
  14. 写给程序员的 2018 新年计划清单
  15. C++ 使用string的头文件和要求
  16. STM32之ADC的理解及运用
  17. Vivado与modelsim联合仿真(2018.3---10.6c)
  18. 中山大学数据科学与计算机学院复试分数线,2019中山大学数据科学与计算机学院考研复试分数线...
  19. python中ipo模型有,python ipo模型是指什么?-Python教程
  20. HTML外边框塌陷什么意思,你不知道的CSS(边框塌陷)?

热门文章

  1. nginx容器通过docker内置DNS实现动态负载
  2. 关于locale的设定
  3. seaweedfs报存储错误
  4. 张子保:不忘初心 方得始终《原创》
  5. python关联分析库_使用Python进行数据关联分析
  6. linux cp dd 不同文件系统,根文件系统的制作
  7. luogu 2411 白银莲花池 luogu 1606 Lilypad Pond
  8. android l fox x86,【原创】X61T笔触(无手触)安卓(X86)系统真正完美
  9. 关于电平转换电路1.8V转3.3V
  10. Poetry of Today3--琵琶行