由于调用摄像头有使用权限,只能在本地运行,线上需用https域名才可以使用。

<template><div class="camera_outer"><videoid="videoCamera":width="videoWidth":height="videoHeight"autoplay></video><canvasstyle="display: none"id="canvasCamera":width="videoWidth":height="videoHeight"></canvas><div v-if="imgSrc" class="img_bg_camera"><img :src="imgSrc" alt="" class="tx_img" /></div><button @click="getCompetence()">打开摄像头</button><button @click="stopNavigator()">关闭摄像头</button><button @click="setImage()">拍照</button></div>
</template><script>
export default {data() {return {videoWidth: 300,videoHeight: 300,imgSrc: "",thisCancas: null,thisContext: null,thisVideo: null,};},mounted() {this.getCompetence();},methods: {// 调用权限(打开摄像头功能)getCompetence() {var _this = this;this.thisCancas = document.getElementById("canvasCamera");this.thisContext = this.thisCancas.getContext("2d");this.thisVideo = document.getElementById("videoCamera");// 旧版本浏览器可能根本不支持mediaDevices,我们首先设置一个空对象if (navigator.mediaDevices === undefined) {navigator.mediaDevices = {};}// 一些浏览器实现了部分mediaDevices,我们不能只分配一个对象// 使用getUserMedia,因为它会覆盖现有的属性。// 这里,如果缺少getUserMedia属性,就添加它。if (navigator.mediaDevices.getUserMedia === undefined) {navigator.mediaDevices.getUserMedia = function (constraints) {// 首先获取现存的getUserMedia(如果存在)var getUserMedia =navigator.webkitGetUserMedia ||navigator.mozGetUserMedia ||navigator.getUserMedia;// 有些浏览器不支持,会返回错误信息// 保持接口一致if (!getUserMedia) {return Promise.reject(new Error("getUserMedia is not implemented in this browser"));}// 否则,使用Promise将调用包装到旧的navigator.getUserMediareturn new Promise(function (resolve, reject) {getUserMedia.call(navigator, constraints, resolve, reject);});};}var constraints = {audio: false,video: {width: this.videoWidth,height: this.videoHeight,transform: "scaleX(-1)",},};navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {// 旧的浏览器可能没有srcObjectif ("srcObject" in _this.thisVideo) {_this.thisVideo.srcObject = stream;} else {// 避免在新的浏览器中使用它,因为它正在被弃用。_this.thisVideo.src = window.URL.createObjectURL(stream);}_this.thisVideo.onloadedmetadata = function (e) {_this.thisVideo.play();};}).catch((err) => {console.log(err);});},//  绘制图片(拍照功能)setImage() {var _this = this;// 点击,canvas画图_this.thisContext.drawImage(_this.thisVideo,0,0,_this.videoWidth,_this.videoHeight);// 获取图片base64链接var image = this.thisCancas.toDataURL("image/png");_this.imgSrc = image;this.$emit("refreshDataList", this.imgSrc);},// base64转文件dataURLtoFile(dataurl, filename) {var arr = dataurl.split(",");var mime = arr[0].match(/:(.*?);/)[1];var bstr = atob(arr[1]);var n = bstr.length;var u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, { type: mime });},// 关闭摄像头stopNavigator() {this.thisVideo.srcObject.getTracks()[0].stop();},},
};
</script><style lang="scss" scoped>
.camera_outer {position: relative;overflow: hidden;background-size: 100%;video,canvas,.tx_img {-moz-transform: scaleX(-1);-webkit-transform: scaleX(-1);-o-transform: scaleX(-1);transform: scaleX(-1);}.btn_camera {position: absolute;bottom: 4px;left: 0;right: 0;height: 50px;background-color: rgba(0, 0, 0, 0.3);line-height: 50px;text-align: center;color: #ffffff;}.bg_r_img {position: absolute;bottom: 0;left: 0;right: 0;top: 0;}.img_bg_camera {position: absolute;right: 0;top: 0;img {width: 300px;height: 300px;}.img_btn_camera {position: absolute;bottom: 0;left: 0;right: 0;height: 50px;line-height: 50px;text-align: center;background-color: rgba(0, 0, 0, 0.3);color: #ffffff;.loding_img {width: 50px;height: 50px;}}}
}
</style>

前端调用本地摄像头实现拍照(vue)相关推荐

  1. vue调用本地摄像头实现拍照

    前言: vue调用本地摄像头实现拍照功能,由于调用摄像头有使用权限,只能在本地运行,线上需用https域名才可以使用. 实现效果: 1.摄像头效果: 2.拍照效果: 实现代码: <templat ...

  2. html5调取web端摄像头,JavaScript-web前端如何调用本地摄像头进行拍照?

    JS调用好像不行,一般都是用Flash的Com,这是写好的一个Flash调用摄像头的,参考一下吧 package { import flash.display.Sprite; import flash ...

  3. Vue 使用 navigator.mediaDevices.getUserMedia 调用本地摄像头实现录像以及拍照功能

    目录 前言 API `MediaDevices.getUserMedia()` 拍照功能实例 完整代码 实现效果 录像功能实例 完整代码 实现效果 总结 前言 最近在做开源实例: Vue.js 实战系 ...

  4. Vue调用本地摄像头权限

    使用电脑本地摄像头的权限 关于如何调用本地摄像头的问题 准备工具 (VS Code,Vue脚手架工具,Element UI) vue调用本地摄像头实现拍照功能,由于调用摄像头有使用权限,只能在本地运行 ...

  5. js调用本地摄像头拍照截图,提交后台

    今天有个需求,需要在前端界面调用本地摄像头,然后拍照结束后可以截取预览,最后将结果提交到后台.查了网上很多的插件,发现适合的非常少,于是决定自己修改一个. 这里我修改了一个jquery插件,把摄像头拍 ...

  6. JS调用本地摄像头拍照(兼容各大浏览器及IE8+)

    最近做的项目遇到了个难题,使用video+canvas+getUserMedia()写的调用本地摄像头拍照不兼容IE. 原因:IE8及以下不支持HTML5标签:video和canvas:IE11及以下 ...

  7. 利用python调用本地摄像头拍照,对图片命名并保存到指定位置,带界面

    1.需求: 因项目需要做一个以图搜图的小程序,需要储备零件图库,约1000种 2.原计划&痛点 原本想通过手机挨个拍照,再拷贝出来,重命名,这样会耽误大量时间,且容易出错 3.解决方案 于是做 ...

  8. html5 调用摄像头 支持IE,JS调用本地摄像头拍照(兼容各大浏览器及IE8+)

    最近做的项目遇到了个难题,使用video+canvas+getUserMedia()写的调用本地摄像头拍照不兼容IE. 原因:IE8及以下不支持HTML5标签:video和canvas:IE11及以下 ...

  9. 摄像头网页服务器,js调用本地摄像头拍照并上传到web服务器

    [实例简介] js调用本地摄像头拍照并上传到web服务器.后台使用java实现图片的接收和存储,上传的图片默认保存到项目下的images文件夹中. [实例截图] [核心代码] MyCamera └── ...

最新文章

  1. tmap的使用_MapInfo教程--二次开发入门
  2. P2303 [SDOI2012] Longge(数论/欧拉函数)
  3. 个人主页 — github + jekyll 搭建自己的个人主页
  4. 笔记本 无线网联网 win10系统 ,台式机木有无线网卡,通过一根网线连接两台电脑,使台式机联网。...
  5. Travelling not wandering
  6. qp_查看表的数据是否更新了指定的某一天数据
  7. 从前端页面上下载为png格式的图片
  8. 10个值得珍藏的4K高清壁纸网站推荐
  9. 培训python开发 骗局
  10. C4.5(决策树预测)算法
  11. CentOS 7安装Docker
  12. java写入文件乱码问题_Java写入文件的乱码及解决
  13. 从虚拟试衣到设计海报,京东黑科技让时尚行业大变脸
  14. 瑞星误删用友服务文件ServerNT.exe
  15. 计算机找不到工具怎么办,电脑工具栏声音图标不见了怎么办
  16. elasticsearch你了解多少?
  17. osg的geographic和geodetic
  18. Flink数据流DataStream
  19. OAK 双目相机 --debug 硬盘空间用尽,解决方法是禁用uvcdynctrldebug
  20. 史上最强大的华为Mate40系列:全球唯一5nm 5G SoC,顶配超1.8万元!

热门文章

  1. ad936x接收功能验证的寄存器配置(3)
  2. PaddleHub创意---美颜证件照
  3. 数电课程设计-----自动售酸奶机
  4. R语言dplyr包filter函数 Error in filter(., ) : 找不到对象的报错原因和解决办法
  5. 史上最萌妹纸最多的吃鸡游戏:没错,说的就是香肠派对
  6. 面试两连击:线上JVM GC问题和OOM内存溢出的解决方案,聊聊呗!
  7. java编程贴纸问题_Java实现 LeetCode 691 贴纸拼词(DFS+map记录)
  8. 基于Python实现的图的同构算法
  9. 虚拟摄像头之四: 谁在调用 v4l2_camera_HAL 摄像头驱动
  10. 从0开发游戏引擎之游戏引擎中2D序列帧动画控制器的实现