vue如何调用本地摄像头出错
代码:
页面布局:
<div id='takePhoto' >
<div id='support'></div>
<div id='contentHolder'>
<video id='video' width='352' height='496' style='border:1px solid gray;float: left;' autoplay></video>
<div id='imageBox' class='imageBox1'>
<canvas id='canvas'></canvas>
<div class='thumbBox1'></div>
</div>
<div style="clear: both;width: 352px;text-align: center">
<el-button id='snap' class= 'my-button' @click="takePhoto">拍照</el-button>
<el-button id='snap2' style='display: none;' class='my-button' @click="retakePhoto">重新拍照</el-button>
</div>
<div id='cropped1' class='cropped1' style='display: none;'>
</div>
</div>
</div>
js代码:
created() {
this.getVideo();
},
methods: {
getVideo() {
var video = $('#video');
var videoObj = { 'video': true };
var errBack = function(error) {
console.log('Video capture error: ' + error.message, error.code);
};
var stre;
var mediaStream;
// 支持浏览器 谷歌,火狐,360,欧朋
// navigator.getUserMedia这个写法在Opera中好像是navigator.getUserMedianow
if (navigator.getUserMedia) {
navigator.getUserMedia(videoObj, function(stream) {
video.src = stream;
stre = stream;
video.trigger('play');
}, errBack);
} else if (navigator.webkitGetUserMedia) {
navigator.webkitGetUserMedia(videoObj, function(stream) {
video.src = window.URL.createObjectURL(stream);
mediaStream = stream;
stre = stream;
video.trigger('play');
}, errBack);
} else if (navigator.mozGetUserMedia) {
navigator.mozGetUserMedia(videoObj, function(stream) {
video.src = window.URL.createObjectURL(stream);
mediaStream = stream;
stre = stream;
video.trigger('play');
}, errBack);
}
},
// 点击拍照
takePhoto() {
var img_src;
$('#video').hide();
$('#snap').hide();
$('#snap2').show();
$('#imageBox').show();
$('#action').show();
$('#cropped1').show();
var canvans = $('#canvas');
var video = $('#video');
var context = canvans.get(0).getContext('2d');
canvans.width(219);
canvans.height(413);
context.drawImage(video, 0, 0);
// 获取浏览器页面的画布对象
// 以下开始编 数据
var imgData = document.getElementsByTagName('canvas')[0].toDataURL('image/jpg');
// 将图像转换为base64数据
var base64Data = imgData.split(',')[1];
$('#canvas').hide();
var options1 = {
thumbBox: '.thumbBox1',
spinner: '.spinner',
imgSrc: imgData
}
},
// 点击重新拍照
retakePhoto() {
this.getVideo();
$('#video').show();
$('#snap').show();
$('#snap2').hide();
$('#imageBox').hide();
$('#action').hide();
$('#cropped1').hide();
}
}
第一次报错:
加了[0]
修改后:
问题:看不到摄像头获取的图像。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
和框架无关,属于浏览器的工作。MDN
麻烦帮我看看我的报错什么问题 谢谢
你试下这个例子:
html:
主要的js:
如果需要click事件还是用@click形式吧。。