zoukankan      html  css  js  c++  java
  • Js调用摄像头拍照

    HTML部分代码

    <!--video用于显示媒体设备的视频流,自动播放-->
    <video id="video" autoplay style="480px;height:320px"></video>
    <div>
      <button id="capture">
        拍照                                                         <!--拍照按钮-->
      </button>
    </div>
    <canvas id="canvas" width="480" height="320"></canvas>           <!--绘制video截图-->

    Js

    //访问用户媒体设备兼容的方法
    function 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) {
            //Firefox浏览器
            navigator.mozGetUserMedia(constraints, success, error);
        } else if (navigator.getUserMedia) {
            //旧版API
            navigator.getUserMedia(constraints, success, error);
        }
    }
    
    var video = document.getElementById("video");
    var canvas = document.getElementById("canvas");
    var context = canvas.getContext("2d");
    
    //成功的回调函数
    function success(stream) {
        //兼容的webkit核心浏览器
        var CompatibleURL = window.URL || window.webkitURL
        //将视频流设置为video元素的源
        video.src = CompatibleURL.createObjectURL(stream);
        video.play();
    }
    
    //异常的回调函数
    function error(error) {
        console.log('访问用户媒体设备失败:', error.name, error.message);
    }
    
    if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia ||
        navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {
        //调用用户媒体设备,调用摄像头
        getUserMedia({ video: {  480, height: 320 } }, success, error);
    } else {
        alert('你的浏览器不支持访问用户媒体设备!');
    }
    
    //绑定拍照按钮的单击事件
    document.getElementById("capture").addEventListener("click", function () {
        context.drawImage(video, 0, 0, 480, 320);//将video绘制在canvas上
    });
  • 相关阅读:
    Gin 框架的使用
    Beego model 增删改查
    Beego 搭建
    Go 如何快速解决依赖管理问题
    Go 语法基础
    使用vue控制元素显示隐藏
    Vue 刷新页面方式 和页面跳转的方式
    如何让nginx 显示文件夹目录
    Vue(项目配置iview的upload插件上传文件 )+ Python flask 上传文件
    uwsgi 常见配置
  • 原文地址:https://www.cnblogs.com/xxxsans/p/14379592.html
Copyright © 2011-2022 走看看