<!--
* @description 摄像头vue版实例
* @fileName cameraObject.vue
* @author 彭成刚
* @date // ::
* @version V1.0.0
!-->
<template>
<div id="cameraObject">
<!-- <div style="width:505px;float:left;"> </div> -->
<video ref="video"
width=""
height="">
</video>
<Button type='primary'
@click="handleCamera"
icon="md-camera"
style="margin-bottom:5px;">拍照</Button>
<canvas ref="canvas"
width=""
height=""></canvas>
<!-- <div style="width:100px;float:left;"> </div>
<div style="width:480px;float:left;"> </div> --> </div>
</template> <script>
export default {
data () {
return {
timer: new Date().getTime().toString(),
picIsHave: false
}
}, components: {}, computed: {}, mounted () {
if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {
// 调用用户媒体设备, 访问摄像头
this.getUserMedia({ video: { width: , height: } }, this.success, this.error)
} else {
alert('不支持访问用户媒体')
} // document.getElementById('capture').addEventListener('click', function () {
// context.drawImage(video, 0, 0, 480, 320)
// })
}, methods: {
getPicBase64 () {
// let canvas = document.getElementById('canvas')
let canvas = this.$refs['canvas']
let base64 = canvas.toDataURL('image/png', )
let ret = {
picIsHave: this.picIsHave,
base64: base64
}
return ret
},
handleCamera () {
this.picIsHave = true
// let canvas = document.getElementById('canvas' + this.timer)
let canvas = this.$refs['canvas']
// let video = document.getElementById('video' + this.timer)
let video = this.$refs['video']
let context = canvas.getContext('2d')
context.drawImage(video, , , , )
}, // 访问用户媒体设备的兼容方法
getUserMedia (constraints, success, error) {
if (navigator.mediaDevices.getUserMedia) {
// 最新的标准API
navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error)
} else if (navigator.webkitGetUserMedia) {
// webkit核心浏览器
navigator.webkitGetUserMedia(constraints, success, error)
} else if (navigator.mozGetUserMedia) {
// firfox浏览器
navigator.mozGetUserMedia(constraints, success, error)
} else if (navigator.getUserMedia) {
// 旧版API
navigator.getUserMedia(constraints, success, error)
}
},
success (stream) {
// 兼容webkit核心浏览器
// let CompatibleURL = window.URL || window.webkitURL
// 将视频流设置为video元素的源
// console.log('stream', stream)
// console.info('success') // video.src = CompatibleURL.createObjectURL(stream);
// let video = document.getElementById('video' + this.timer)
let video = this.$refs['video']
video.srcObject = stream
video.play()
}, error (error) {
console.log(`访问用户媒体设备失败${error.name}, ${error.message}`)
}
}
} </script>
<style lang='less'>
#cameraObjectVideo {
transition: rotate(90deg);
}
</style>

ref版的 摄像头 读取 因为id的时候,id不能重复 还要用时间戳,比较麻烦的更多相关文章

  1. QQ摄像头读取条码

    跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手—打开新的Image Acquisitio ...

  2. 跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码

    跟我学机器视觉-HALCON学习例程中文详解-QQ摄像头读取条码 第一步:插入QQ摄像头,安装好驱动(有的可能免驱动) 第二步:打开HDevelop,点击助手-打开新的Image Acquisitio ...

  3. 进程控制之更改用户ID和组ID

    在UNIX系统中,特权(例如能改变当前日期的表示法以及访问控制(例如,能否读.写一特定文件))是基于用户ID和组ID的.当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己的用户I ...

  4. PHP把数字ID转字母ID

    PHP把数字ID转字母ID ID是网站中经常出现的,它一般是数字,但是我们发现现在的网站很多ID都是字母了,比如YouTube的视频播放页它的URL类似/watch?v=yzNjIBEdyww. 下面 ...

  5. 获取进程ID,父进程ID,进程完整路径

    准备写一个进程管理的功能模块,今天下午先写了扫描获取本机各个进程路径,获取各个进程映像名称,进程完整路径. 要获取进程信息,第一步想到的就是提权,提权代码用过多次了,今天也小结了一下(http://w ...

  6. C#获取电脑硬件信息(CPU ID、主板ID、硬盘ID、BIOS编号)

    最近学习过程中,想到提取系统硬件信息做一些验证,故而对网上提到的利用.NET System.Management类获取硬件信息做了进一步的学习.验证.验证是分别在4台电脑,XP SP3系统中进行,特将 ...

  7. NB-IOT移植移动onenet基础通信套件之Object_ID,实例ID,资源ID

    1. 访问是按照分层的,Object_ID/实例ID/资源ID,对应每一层ID的数据类型,目前是分为3层,一个实例下面可以有多个实例id,对下面的数据结构来说,如果是资源ID的话,类型只能是asBuf ...

  8. 获取CPU ID ,disk ID, MAC ID (windows ARM linux Mac)

    windows 命令行获取CPU ID,可以用ShellExecute wmic cpu get processorid ProcessorId BFEBFBFF000506E3 开源库: 查询CPU ...

  9. 深入理解android:id以及@+id/name和@id/name的区别联系

    今天为了好好研究了下@+id/name和@id/name的区别以及联系,又翻了翻文档/guide/topics/resources/layout-resource.html中关于 android:id ...

随机推荐

  1. ng 表单提交验证

    http://www.runoob.com/try/try.php?filename=try_ng_validate

  2. 移植tslib库出现selected device is not a touchscreen I understand的解决方法

    首发平台:微信公众号baiwenkeji 很多人在做触摸屏驱动实验,移植tslib库时,可能会出现错误提示“selected device is not a touchscreen I underst ...

  3. 【212】HDF更新数据&HDF创建

    HDF更新数据:对原有HDF数据进行数据更新,不破坏HDF的数据结构 pro add_data_sst ;实现将SST增加1度,再将结果更新到SST中 ;1. 获取SST索引 ;2. 通过索引获取ID ...

  4. 改造u3d第一人称控制器,使之适合Cardboard+蓝牙手柄控制

    一.在u3d编辑器中删除FPSController游戏对像中自带的Camera: 二.在u3d编辑器中将CardBoardMain游戏对像添加到FPSController的子物体: 三.修改脚本: 1 ...

  5. E20180406-hm

    dressing n. 穿衣; 调味品; 肥料 dress n. 衣服; 礼服; 连衣裙; 装饰; vt. 打扮; 穿着; 给…穿衣; monde  n. 时髦社交界,上流社会; ingredient ...

  6. UILabel和UIButton添加下划线

    关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的 NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选 ...

  7. hdoj1728【搜索的两种写法】

    以前的一道题目,现在拿到总觉得是DFS,然后T掉就没什么想法了,很狗的看了以前的写法(以前还是看题解的AC的),是BFS,每次都要转弯,但是之前你的达到一种他走到了死路,所以才是不得不转弯,写法也是非 ...

  8. RobotFramework自动化测试框架(2)- RobotFramework语法

    RobotFramework测试用例是由四部分组成的,下面就从这四个部分简单介绍语法: 关键字表 *** Keywords *** 设置表 *** Settings *** 变量表 *** Varia ...

  9. win和mac系统Sublime Text 3配置编译c和c++

    widows安装 安装MinGW MinGW是Minimalist GNU on Windows的首字母缩写,安装后就可以使用很多的GNU工具.GNU(GNU’s Not Unix)是linux中的一 ...

  10. django接受表单

    from django.shortcuts import render from django.shortcuts import HttpResponse import os # Create you ...