• H5+js调用相机


    在机缘巧合之下,了解到用HTML5和javascript调用摄像头来实现拍照功能,今天就把大致原理写下来。页面布局很简单,就是一个input标签,两个HTML5元素video、canvas和一个button按钮。video元素带有开启视频功能的函数,canvas元素带有捕捉图像功能的函数。

    源代码如下:

    <!doctype html>
    <html lang="en">
    <head>
    <title>GET VIDEO</title>
    <meta charset="utf-8">
    </head>
    <body>
    <input type="button" title="开启摄像头" value="开启摄像头" onclick="getMedia()" />
    <video id="video" width="500px" height="500px" autoplay="autoplay"></video>
    <canvas id="canvas" width="500px" height="500px"></canvas>
    <button id="snap" onclick="takePhoto()">拍照</button>
    <script>
    function getMedia() {
    let constraints = {
    video: { 500, height: 500},
    audio: true
    };
    //获得video摄像头区域
    let video = document.getElementById("video");
    //这里介绍新的方法,返回一个 Promise对象
    // 这个Promise对象返回成功后的回调函数带一个 MediaStream 对象作为其参数
    // then()是Promise对象里的方法
    // then()方法是异步执行,当then()前的方法执行完后再执行then()内部的程序
    // 避免数据没有获取到
    let promise = navigator.mediaDevices.getUserMedia(constraints);
    promise.then(function (MediaStream) {
    video.srcObject = MediaStream;
    video.play();
    });
    }

    function takePhoto() {
    //获得Canvas对象
    let video = document.getElementById("video");
    let canvas = document.getElementById("canvas");
    let ctx = canvas.getContext('2d');
    ctx.drawImage(video, 0, 0, 500, 500);
    }
    </script>
    </body>
    </html>
     

    介绍一下代码中涉及到的两个函数:

    getMedia()函数:

    constraints 参数是一个包含了video和audio两个成员的MediaStreamConstraints对象,用于说明请求的媒体类型。必须至少一个类型或者两个同时可以被指定。如果浏览器无法找到指定的媒体类型或者无法满足相对应的参数要求,那么返回的Promise对象就会处于rejected[失败]状态,NotFoundError作为rejected[失败]回调的参数。

    有关于constraints对象的具体细节请点击下方链接:

    有关于constraints对象的具体细节介绍

    getMedia()函数中的其他代码解释都在源代码中,不再赘述。

    takePhoto()函数:

    let video =document.getElementById("video");

    let  canvas =document.getElementById("canvas");

     解释:Javascript使用id来获取video和canvas元素。

     let  ctx =ty.getContext('2d');

    解释:创建context对象,getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、

    字符以及添加图像的方法。

    下面对HTML5中的canvas drawImage()方法做一介绍:

    context.drawImage(img,x,y,width,height);

    img:规定要使用的图像、画布或视频。

     x: 在画布上放置图像的 x 坐标位置。

     y:  在画布上放置图像的 y 坐标位置。

    要使用的图像的宽度。

    height: 要使用的图像的高度。

    以上就是基本的drawImage()方法的介绍,要想了解更多,请点击下方链接。

    更多内容介绍drawImage()方法
    ---------------------
    原文链接:https://blog.csdn.net/lishundi/article/details/80604747

  • 相关阅读:
    Vue-如何实现响应式
    Docker中mysql容器时区问题
    Django格式化日期时,抛出异常ValueError: embedded null byte
    前端报被CORS策略阻止,Django开启跨域解决
    DRF框架之认证、授权和登录
    Django之ALLOWED_HOSTS、LOGGING和多个子应用管理
    DRF框架生成接口文档
    DRF框架之自定义action
    DRF框架之视图集、Routers路由
    DRF框架之Concrete Generic Views
  • 原文地址:https://www.cnblogs.com/sunxun/p/11339598.html
Copyright © 2020-2023  润新知