首页 > 其他分享 >手摸手实现js拍照

手摸手实现js拍照

时间:2023-08-03 13:56:21浏览次数:36  
标签:拍照 const cvs js height width video canvas 手摸

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>
        <video id="video" autoplay style="">#000;"></video>
        <canvas style="display: none;" id="canvas"></canvas>
        <img id="img" src="" alt="这是个照片">
    </div>
    <button id="btn_snap" onclick="takePhoto()">拍照</button>
    <button onclick="save()">保存</button>
</body>
<script>
    const cvs = document.getElementById('canvas')
    const video = document.getElementById('video')
    // 宽度设置400
    cvs.width = cvs.height = video.width = video.height = 400
    const { width, height } = cvs
    const ctx = cvs.getContext('2d')
    // 定义吊起摄像头要用的参数格式固定
    const constraints={
        video:{
            width,
            height
        }
    }
    // 媒体设备获取媒体摄像   stream里面的数据流
    navigator.mediaDevices.getUserMedia(constraints).then(stream=>{
    video.srcObject=stream
    // 等数据流加载好之后就会触发这个事件    一旦触发就使用play方法捕捉到画面
    video.onloadedmetadata=()=> video.play()
    })
    // 实现拍照
    function  takePhoto(){
        // canvas可以直接化video
        ctx.drawImage(video,0,0,width,height)
        // 直接把图片打出来
        document.getElementById('img').src=canvas.toDataURL('image/png')
        console.log( ctx.drawImage(video,0,0,width,height));
        console.log(canvas.toDataURL('image/png'));
    }
      // 保存-将画布内容保存为图片
      const save = () => {
        // 将canvas上的内容转成blob流
        cvs.toBlob(blob => {
            const date = Date.now().toString()
            const a = document.createElement('a')
            a.download = `${date}.png`
            a.href = URL.createObjectURL(blob)
            a.click()
            a.remove()
        })
    }
</script>

</html>

 

标签:拍照,const,cvs,js,height,width,video,canvas,手摸
From: https://www.cnblogs.com/tcyweb/p/17603123.html

相关文章

  • 老杜 JavaWeb 讲解(十八) ——项目优化(Servlet+JSP+EL+JSTL)
    (十六)项目优化(Servlet+JSP+EL+JSTL)相关视频:55-EL表达式JSTL和base标签改造OA新旧代码对比:注意点:Java代码不需要改动,只需要更改jsp代码。将需要的包导入:jakarta.servlet.jsp.jstl-2.0.0.jarjakarta.servlet.jsp.jstl-api-2.0.0.jarmysql-connector-j-8.0.31.j......
  • ThreeJs实现简单的动画
    上一节实现可用鼠标控制相机的方式实现动态效果,但很多时候是需要场景自己产恒动态效果,而不是通过鼠标拖动,此时引入一个requestAnimationFrame方法,它实际上是通过定时任务的方式,每隔一点时间改变场景中内容后重新渲染一遍,间隔时间短的话视觉上就显示出连续的动画效果,Js本身也自带定......
  • 【js学习笔记二十二】...扩展运算符
     目录前言导语 代码部分 运行结果前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷导语歌谣歌谣......
  • js 标准时间比较 false 时间戳比较才行
    newDate(),同一时间段的newDate()都是不一样的newDate("ThuAug03202309:59:16GMT+0800(中国标准时间)").getT==newDate("ThuAug03202309:59:16GMT+0800(中国标准时间)")//falsenewDate("ThuAug03202309:59:16GMT+0800(中国标准时间)").getTime()......
  • 解决 heatmap.js 'Cannot assign to read only property 'data' of object' 问题与 p
    一、问题背景问题是这样发生的,因为项目中需要实现热力图的功能,所以使用了第三方的库heatmap.js。但是在一些浏览器中使用它时,会出现这个错误:>UncaughtTypeError:Cannotassigntoreadonlyproperty'data'ofobject'#<ImageData>'出现问题的原因是因为img.data=im......
  • 《摄像头篇》c#使用Aforge调用摄像头拍照
    使用Aforge调用摄像头拍照参考链接:https://www.jb51.net/article/148364.htm这篇文章主要为大家详细介绍了C#使用Aforge调用摄像头拍照的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了C#使用Aforge调用摄像头拍照的具体......
  • JS作用域
    全局作用域全局作用域变量:直接用var,const,let声明的变量局部作用域局部作用域变量:块,函数,对象,{}中声明的变量局部声明全局变量方法:JS中的作用域问题成为执行上下文,分为全局上下文和局部上下文JS中有一个概念作用域链(scopechain)表示上下文间的关系.和C++中的全局......
  • 如何为你的 js 项目添加 ts 支持?
    前一段时间为公司内的一个JS公共库,增加了一些TypeScript类型支持。在这里简答记录一下。安装TypeScript依赖首先安装TypeScript依赖,我们要通过tsc指令创建声明文件:pnpminstall-Dtypescript创建配置文件接下来创建TypeScript配置文件:npxtsc--init这一......
  • fastjson 1.2.80 漏洞浅析及利用payload
    0x01说明在fastjson的1.2.80版本中可以通过将依赖加入到java.lang.Exception期望类的子类中,绕过checkAuto。0x02简析{"@type":"java.lang.Exception","@type":"org.codehaus.groovy.control.CompilationFailedException","unit":{......
  • 老杜 JavaWeb 讲解(十七) ——JSP补充
    (十六)JSP补充相关视频:49-JSP的page指令以及九大内置对象和EL表达式指令指令的作用:指导JSP的翻译引擎如何工作(指导当前的JSP翻译引擎如何翻译JSP文件。)指令包括哪些呢?include指令:包含指令,在JSP中完成静态包含,很少用了。(这里不讲)taglib指令:引入标签库的指令。这个到JS......