生成图片是通过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>camera</title><style>#camera {float: left;margin: 20px;}#contentHolder {width: 300px;height: 300px;margin-bottom: 10px;}#btn_snap {margin: 0 auto;border: 1px solid #f0f0f0;background: #5CACEE;color: #FFF;width: 100px;height: 36px;line-height: 36px;border-radius: 8px;text-align: center;cursor: pointer;cursor: pointer;/*禁止选择*/-webkit-touch-callout: none;/* iOS Safari */-webkit-user-select: none;/* Chrome/Safari/Opera */-khtml-user-select: none;/* Konqueror */-moz-user-select: none;/* Firefox */-ms-user-select: none;/* Internet Explorer/Edge */user-select: none;/* Non-prefixed version, currently not supported by any browser */}#imgBoxxx {width: 200px;margin: 60px 20px 20px;/* border-radius: 50%; */}</style>
</head><body><div id="camera"><div id="contentHolder"><video id="video" width="300" height="300" autoplay></video><canvas style="display:none;" id="canvas" width="300" height="300"></canvas></div><div id="btn_snap" onclick="myfunction()">拍照</div></div><script>var canvas = document.getElementById("canvas"),pzBtn = document.getElementById("btn_snap"),context = canvas.getContext("2d"),video = document.getElementById("video");// alert('该页面会调用您的摄像头')// 旧版本浏览器可能根本不支持mediaDevices,我们首先设置一个空对象if (navigator.mediaDevices === undefined) {navigator.mediaDevices = {};}// 一些浏览器实现了部分mediaDevices,我们不能只分配一个对象// 使用getUserMedia,因为它会覆盖现有的属性。// 这里,如果缺少getUserMedia属性,就添加它。if (navigator.mediaDevices.getUserMedia === undefined) {navigator.mediaDevices.getUserMedia = function(constraints) {// 首先获取现存的getUserMedia(如果存在)var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia;// 有些浏览器不支持,会返回错误信息// 保持接口一致if (!getUserMedia) {return Promise.reject(new Error('getUserMedia is not implemented in this browser'));}//否则,使用Promise将调用包装到旧的navigator.getUserMediareturn new Promise(function(resolve, reject) {getUserMedia.call(navigator, constraints, resolve, reject);});}}var constraints = {audio: false,video: {width: 720,height: 720}}navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {var video = document.querySelector('video');// 旧的浏览器可能没有srcObjectif ("srcObject" in video) {video.srcObject = stream;} else {//避免在新的浏览器中使用它,因为它正在被弃用。video.src = window.URL.createObjectURL(stream);}video.onloadedmetadata = function(e) {video.play();};}).catch(function(err) {console.log(err.name + ": " + err.message);});function myfunction() {var date = new Date().getTime();// 点击,canvas画图context.drawImage(video, 0, 0, 300, 300);// 获取图片base64链接var image = canvas.toDataURL('image/png');// 定义一个imgvar img = new Image();//设置属性和srcimg.id = "imgBox";img.src = image;//将图片添加到页面中document.body.appendChild(img);// base64转文件function dataURLtoFile(dataurl, filename) {var arr = dataurl.split(','),mime = arr[0].match(/:(.*?);/)[1],bstr = atob(arr[1]),n = bstr.length,u8arr = new Uint8Array(n);while (n--) {u8arr[n] = bstr.charCodeAt(n);}return new File([u8arr], filename, {type: mime});}console.log(date);console.log(dataURLtoFile(image, date + '.png'));};</script>
</body></html>

js通过浏览器调用摄像头并实现拍照相关推荐

  1. JS通过浏览器调用摄像头,基于windows操作系统。

    方法一: <!doctype html> <html lang="en"> <head><title>GET VIDEO</t ...

  2. Atititjs h5调用摄像头视频聊天 拍照功能 相机功能 录像attilax总结

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Atit ...

  3. 微信小程序开发(3) - 微信小程序调用摄像头静默隐藏拍照功能实现方式

    微信小程序最近非常火热,小编最近做了一个微信小程序开发新项目,使用小程序开发考试系统,在使用App参加考试的时候调用摄像头抓拍用户是否作弊,在开发过程中遇到点问题,下面小编把问题描述和解决方法分享给大 ...

  4. 浏览器调用摄像头getUserMedia

    浏览器调用摄像头getUserMedia 2018年启动QQ浏览器会启动摄像头的新闻闹得沸沸扬扬. 前段时间公司让研究一下这个浏览器启用摄像头的功能,希望能够实现浏览器网页扫描二维码的功能.现在写下来 ...

  5. 服务器项目前端调用摄像头失败,浏览器调用摄像头失败:NotSupportedError Only secure origins are allowed...

    通过浏览器调用摄像头失败:NotSupportedError Only secure origins are allowed 错误报告 NotSupportedError Only secure or ...

  6. 【javascript】浏览器调用摄像头扫二维码踩坑记录

    前言 最近做一个项目需要用浏览器调用摄像头扫二维码,然后就踩了几个坑记录下. 踩坑记录 我一开始发现了zxing这个库,他分为https://www.npmjs.com/package/@zxing/ ...

  7. chrome浏览器调用摄像头

    chrome浏览器调用摄像头 //var 是定义变量var canvans = document.getElementById("canvas");var video = docu ...

  8. 解决PC浏览器调用摄像头失败(本地可以,线上失败)

    解决PC浏览器调用摄像头失败(本地可以,线上失败) 原因:浏览器为了安全http协议获取不到摄像头权限 解决方案 1.切换https 如果域名可以使用https,切换为https即可 2.修改浏览器设 ...

  9. 如何让浏览器调用摄像头时,摄像头读取的是本地文件而不是进行摄像

    如何让浏览器调用摄像头时,摄像头显示的画面是选择好的本地视频文件开始播放,而不是开始摄像,有偿问答

最新文章

  1. bzoj2287【POJ Challenge】消失之物 缺一01背包
  2. 在MFC程序中增加控制台窗口
  3. PHP 判断字符的编码 并输出想要的编码格式字符 (转)
  4. C++中的->用于赋值
  5. 以太坊 交易 data字段 内容是什么
  6. c语言回顾之指针数组和数组指针
  7. laydate定位修改
  8. 出行即服务MaaS精华主题汇总(更新至20220827)
  9. django 关于视频播放
  10. 项目管理中的量化管理
  11. Vue.js watch 属性
  12. 硬件设计学习笔记---第一季第一集
  13. 6 个超酷的学习算法网站,Leetcode 不是第一 ?
  14. 计算机安装重装出现错误,如何解决重装系统失败无法开机进入系统的问题
  15. 墨者学院-编辑器漏洞分析溯源(第1题)
  16. Notepad++作死,国产文本编辑器Notepad--发布
  17. 本地主机可以ping通虚拟机,虚拟机ping不通本地主机,原因(检查是否启用防火墙规则)?
  18. 已知数据表A中每个元素距其最终位置不远,为节省时间排序,应采用什么方法排序?
  19. 怎样使用GIS 技术来编制土地利用规划图
  20. 企业薪酬管理的“七大通病”

热门文章

  1. spring配置文件
  2. spring配置文件ApplicationContext.xml里面class等没有提示功能
  3. MTK MT7628芯片方案使用IQXEL的RF射频测试教程
  4. [Python]简单几行代码带你完成Python切换代理IP
  5. Sidecar模式初识
  6. 【运维心得】双宽带热备方案推荐
  7. 如何在交换机上查找计算机,通过交换机在局域网中查找病毒攻击的方法
  8. 输入阻抗的仿真方法(TINA软件)
  9. 微信抖音的服务器,抖音新用户无法用微信登录 抖音:微信登录服务出问题
  10. SAP odata相关后台表