js调用本地摄像头demo

news/2024/7/19 12:55:25 标签: js, 摄像头

效果:

html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TEST DEMO</title>
</head>
<body>
<div id="main" style="margin-left:10px;overflow-y:scroll;">
    <div>
        <div>
            <div>
                <video style="width:250px;height:250px;border:5px solid black;"></video>
                <img id="picture" style="width:250px;height:250px;border:5px solid black;">
                <canvas id="canvas" style="display: none;width:250px;height:250px"></canvas>
                <button onclick="cameraForm.save()">拍摄</button>
                <button onclick="cameraForm.close()">关闭摄像头</button>
                <button onclick="cameraForm.open()">开启摄像头</button>
            </div>
        </div>
    </div>
</div>
</body>
<script src="/jquery.js"></script>
<script src="/cameraForm.js"></script>
</html>

js

let cameraForm = {
    video: null,
    base64Img: "",
    open: function () {
        // 视频大小
        let constraints = {audio: false, video: {width: 250, height: 250}};
        // 开启视频
        navigator.mediaDevices.getUserMedia(constraints).then(function (mediaStream) {
            cameraForm.video = document.querySelector('video');
            cameraForm.video.srcObject = mediaStream;
            cameraForm.video.onloadedmetadata = function (e) {
                cameraForm.video.play();
            };
        }).catch(function (err) {
            console.log(err.name + ": " + err.message);
            alert("摄像头打开失败")
        });
    },
    close: function () {
        //关闭摄像头
        cameraForm.video.srcObject.getTracks()[0].stop();
    },
    save: function () {
        // 使用canvas进行拍照
        let canvas = document.getElementById('canvas');
        let ctx = canvas.getContext('2d');
        ctx.drawImage(cameraForm.video, 0,0,250, 250);
        cameraForm.base64Img = canvas.toDataURL("image/png");
        document.getElementById('picture').src = cameraForm.base64Img;
    }
};
$(function () {
    cameraForm.open();

});

 


http://www.niftyadmin.cn/n/1481201.html

相关文章

ansible批量增加用户和设置密码

一、两种法批量增加用户和设置密码1、第一种1.1 playbook--- - hosts: "hosts"gather_facts: falsetasks:- name: Change passworduser: name{{ item }} password{{ new_pass | password_hash(sha512) }}with_items: users1.2 执行&#xff0c;214就是要设置密码ansi…

docker安装mysql5.7并且配置my.conf

下载mysql镜像 我们可以直接执行以下命令 docker pull mysql:5.7 执行完之后&#xff0c;我们使用docker images查看是否下载好了 ​ 这样就代表我们的mysql镜像已经下载&#xff0c;接下来需要docker替我们创建并启动一个mysql容器 为了我们后续的使用方便&#xff0c;不采…

c语言:有一函数:当x0,y=-1;x=0,y=0;x0,y=1;编一程序,输入一个x值,要求输出相应的y值。...

有一函数&#xff1a;当x<0,y-1;x0,y0;x>0,y1;编一程序&#xff0c;输入一个x值&#xff0c;要求输出相应的y值。解&#xff1a;程序&#xff1a;#include<stdio.h>int main(){int x,y;printf("请输入一个数字x&#xff1a;");scanf("%d",&…

docker安装redis6.0.6并且配置redis.conf

下载redis镜像 我们可以直接执行以下命令 docker pull redis:6.0.6 执行完之后&#xff0c;我们使用docker images查看是否下载好了 ​ 这样就代表我们的redis镜像已经下载&#xff0c;接下来需要docker替我们创建并启动一个redis容器 为了我们后续的使用方便&#xff0c;不…

老王学linux-centos6.7heartbeat-2.1.4-12.el6.x86_64

centos6.7安装需要的包libnet(可以到fadora源中下载)和libtool&#xff08;镜像中带&#xff09;嫌麻烦可以下载下面提供的包。[rootlw1 heartbeat-2.1.4-12.el6.x86_64]#rpm -ivh libnet-1.1.6-7.el6.x86_64.rpm warning: libnet-1.1.6-7.el6.x86_64.rpm:Header V3 RSA/SHA256…

docker安装nacos2.0.3并配置持久化

一、docker拉取nacos镜像 docker pull nacos/nacos-server:2.0.3 二、创建映射容器的文件目录 # 创建logs目录 mkdir -p /mydata/nacos/logs/# 创建配置文件目录 mkdir -p /mydata/nacos/conf/#授予权限 chmod 777 /mydata/nacos/logschmod 777 /mydata/nacos/conf 三、创建…

安全站点收集

技术类&#xff1a;安全脉搏http://www.secpulse.com/ 乌云知识库http://drops.wooyun.org/ 瞌睡龙的乌云页面&#xff1a;http://drops.wooyun.org/author/%E7%9E%8C%E7%9D%A1%E9%BE%99 博客类:http://www.cnseay.com/ http://www.waitalone.cn/share http://jaq.alibaba.com/…

docker安装nginx1.20.2并配置nginx.conf

一、docker拉取nginx镜像 docker pull nginx:1.20.2 二、创建映射容器的文件目录 # 创建配置文件目录 mkdir -p /mydata/nginx/conf/ mkdir -p /mydata/nginx/conf.d/# 创建logs目录 mkdir -p /mydata/nginx/log/#授予权限 chmod 777 /mydata/nginx/conf/ chmod 777 /mydata…