html5 在线摄像头,HTML5在线摄像头使用

2023-05-16

HTML5在线摄像头应用

最近在搞一个考试系统,系统要求要有随机拍照的功能,并且摄像头能够收到js的控制。在线摄像头嘛,就那两种实现的方式:cab或者flash。

暂且不论本人从没学过的flash(事实上我已经做了一个flash调用摄像头的demo,虽然是调用成功了,但是对于拍照部分我实在是无力了,况且还有js控制flash部分的代码更是令人头痛。)。

本来之前本人已经开发了一个摄像头的cab,但是activeX嘛,只能给IE用用,兼容性和稳定性都不是很好。于是现在开始研究基于HTML5的在线摄像头。

首先看效果

202356596.jpg

Html5大家也渐渐的不那么陌生了,至少也得知道只有少数浏览器能很好的兼容HTML5吧。所以测试环境是Chrome 18以上版本,并且在测试前应开启浏览器的MediaStream:在地址栏输入about:flags,启用MediaStream。

202356597.png

然后就可以开始敲代码了。

不过值得注意的是,HTML5的测试不能再本地直接打开html网页,而是需要在http上访问html页面。直接搭建IIS,apache或者直接通过VS来查看html5页面。

1、  视频流

添加一个Video标签,并调用getUserMedia获得用户的摄像头视频流。

202356598.gif

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

navigator.getUserMedia= navigator.getUserMedia ||navigator.webkitGetUserMedia;if(navigator.getUserMedia) {if(navigator.webkitURL) {

navigator.getUserMedia("video", function(stream) {

video.src=window.webkitURL.createObjectURL(stream);

},function(error) { alert(error); });

}else{

navigator.getUserMedia("video", function(stream) {

video.src=window.webkitURL.createObjectURL(stream);

},function(error) { alert(error); });

}

}else{

alert("navigator.getUserMedia Error");

}

202356598.gif

这样,运行以后便可以直接在网页中调用摄像头了。运行后会提示

202356599.png

2、  拍照

用Canvas捕获Video标签的内容并显示,就做到了拍照的效果。

同样先添加一个canvas标签和一个button按钮

button点击后调用JS,把Video标签中当前的图像显示到canvas中,效果就不做演示了

202356598.gif

functionscamera() {var videoElement = document.getElementById('video');var canvasObj = document.getElementById('canvas1');var context1 = canvasObj.getContext('2d');

context1.fillStyle= "#ffffff";

context1.fillRect(0, 0, 320, 240);

context1.drawImage(videoElement,0, 0, 320, 240);//alert("PaiZhaoSuccess");

}

202356598.gif

3.上传到服务器

上传到服务器还是用的老办法,把图片转为base64,通过ajax,毫无新意的保存到了服务器上。(需要注意的是,HTML5中toDataURL方法是转为的PNG格式,发送到服务端后会很大一张:320*240的照片要190kb,所以需要在服务器端转格式为jpg,变为10kb一张。详情见demo)

202356598.gif

function uploadPhoto()//上传拍照的图片

{

showImgCode();

request=createRequest();if (request == null) {

alert("Unable to create request");

}else{//alert("request.OK");

var base64Data = document.getElementById('textB64').value.replace(/\+/g, "%2B"); //对参数中的+号编码,防止丢失

var url = "AJAX/UploadPic.aspx";

request.open("POST", url, true);

request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

request.onreadystatechange=responses;

request.send("&img=" +base64Data);//alert("send.OK");

}

}functionresponses() {if (request.readyState == 4)//服务器处理结束

{if (request.status == 200)//一切正常

{if (request.responseText == "OK") {

alert("上传成功!");

}else{

alert("上传失败!");

alert(request.responseText);

}

}

}

}

202356598.gif

事实上,通过Html5的其他一些方法,甚至可以做出在线PS的功能,不过这些不在我的需求之内,现在也就不深入研究了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

html5 在线摄像头,HTML5在线摄像头使用 的相关文章

  • GlobalExceptionHandler 捕获抛出的异常,返回特定值给前端

    64 author hhh 64 date 2019 1 17 16 28 64 Despriction 64 ResponseBody 64 ControllerAdvice 64 Log4j2 public class GlobalEx
  • 获取百度地图POI数据一(详解百度返回的POI数据)

    POI是一切可以抽象为空间点的现实世界的实体 xff0c 比如餐馆 xff0c 酒店 xff0c 车站 xff0c 停车场等 POI数据具有空间坐标和各种属性 xff0c 是各种地图查询软件的基础数据之一 百度地图作为国内顶尖的地图企业 x
  • c/c++ linux epoll系列3 利用epoll_wait设置timeout时间长度

    linux epoll系列3 利用epoll wait设置timeout时间长度 epoll wait函数的第四个参数可以设置 xff0c epoll wait函数的等待时间 xff08 timeout时间长度 xff09 例子1 xff0
  • socket编程原理

    socket编程原理 1 问题的引入 1 普通的I O操作过程 UNIX系统的I O命令集 xff0c 是从Maltics和早期系统中的命令演变出来的 xff0c 其模式为打开一读 写一关闭 xff08 open write read cl
  • linux考试题答案2016,2016年4月全国自主考试(网络操作系统)真题

    2016年4月全国自主考试 网络操作系统 真题及答案解析 2016年4月全国自主考试 网络操作系统 真题及答案 xff0c 计算机网络自主考试历年真题 一 单项选择题 本大题共20小题 xff0c 每小题2分 xff0c 共40分 在每小题
  • (14)嵌入式软件开发工程师技能要求总结

    找准一个行业方向 xff1a 音视频 人工智能 深度学习 视觉识别 机器学习 嵌入式软件开发工程师 xff1a 技能要求 xff1a 熟悉 Linux操作系统 shell 脚本语言 mysql 的开发 xff0c 部署 xff0c 优化优先
  • 原来bug解决了,是这样的感觉

    终于过了 xff0c 感觉好想哭啊 xff0c 又莫名其妙的爽 xff0c 原来这就是bug 转载于 https www cnblogs com allison aichipingguo p 10018117 html
  • 闲话handle和handler

    虽然handle和handler只有一个字符之差 xff0c 但在计算机的世界里 xff0c 含义却大相径庭 1 先说说handle 北京话说 34 一边儿玩儿去 xff0c 玩勺子把儿去 34 xff0c 34 勺子把儿 34 说的就是h
  • 大数据发展前沿 期末总结复习

    其实就是简单的在网上搜了一下每个重要词条的基本概念 1 对抗学习 xff08 含Pytorch最简单的深度学习命令 xff09 生成对抗网络 xff08 GAN xff09 是非监督式学习的一种方法 xff0c 透过两个神经网络相互博弈的方
  • 出租车Jt/T 905协议与部标1078协议融合的网约车视频监控平台

    出租车 jt t 905协议 xff0c 是 jt t 808 协议的一个变种 xff0c 设计者将部标 808 协议拿过来 xff0c 并不是单纯的增加网约车相关的指令集 xff0c 而且对原有的指令如定位 0 0200 指令也进行了修改
  • 几款Git GUI客户端工具

    工欲善其事 xff0c 必先利其器 作为一名开发人员 xff0c 你不可能不知道git xff0c 无论你是开发自己的开源项目还是和团队一起进行大规模产品的开发 xff0c git都已经是源代码管理工具的首选 当然 xff0c 那些hard
  • 毕设(一)C#的百度api调用

    这个学期就要毕业了 xff0c 选了一个无人机地面站软件设计的题目 xff0c 这几天也开始着手做 xff0c 首先做了一个百度地图的调用 xff0c 这里因为是上位机的开发 xff0c 所有就不介绍Javascript的 调用方法 xff
  • tf-ros

    http wiki ros org cn tf Tutorials https www ncnynl com archives 201708 1881 html 1 广播变换 发布坐标之间的坐标关系 include lt ros ros h
  • Makefile shell subst $(1)

    MAKE 3 80 realpath 61 shell top srcdir scripts realpath sh 39 subst SQUOTE SQUOTE 1 39 以上Makefile思考好几天不得要领 xff1a 今天想通了 x
  • docker 卸载

    使用yum安装docker xff08 安装过程可以参照linux 安装docker xff09 xff0c 如需卸载docker可以按一下步骤操作 xff1a 1 查看当前docker状态 如果是运行状态则停掉 systemctl sto
  • VIN-Fusion config with Realsense D435i

    First shot Copy the launch file in package VINS Fusion to the directory of realsense2 cameara launch cp home william cat
  • 算法的5个层次

    对算法的掌握 xff0c 大致可以分为5个层次 听说 了解 理解 实现 应用 Level 1 xff1a 听说 知道算法名 知道算法功能 Leven 2 xff1a 了解 知道算法原理 自然语言描述 知道算法优缺点 Leven 3 xff1
  • elf文件下载出错问题

    现在遇到的是sof文件下载有问题 xff0c 不是对应的sof文件 在复制工程后 xff0c 可以在assignment gt setting中指定生成文件所在的文件夹 xff0c 防止sof文件的不对应 转载于 https www cnb
  • 搞定INTEL快速存储技术(用SSD硬盘做缓存加速)

    给朋友买了个联想 ideapad s400 超级本 xff0c 还真是锻炼我的 idea 啊 xff0c 原机不带 WIN7 系统 xff0c 所以只好自己动手装 WIN7 xff0c 并打开 24G SSD 硬盘做缓存 一 用常规方法 G
  • php取今天开始结束,PHP获取今天开始和结束的时间戳

    PHP获取今天开始和结束的时间戳 xff1a t 61 time 开始时间戳 start 61 mktime 0 0 0 date 34 m 34 t date 34 d 34 t date 34 Y 34 t 结束时间戳 end 61 m

随机推荐

  • Java中Semaphore(信号量)的使用

    Semaphore的作用 xff1a 在java中 xff0c 使用了synchronized关键字和Lock锁实现了资源的并发访问控制 xff0c 在同一时间只允许唯一了线程进入临界区访问资源 读锁除外 xff0c 这样子控制的主要目的是
  • git找回丢失的代码

    多人开发时找回丢失的代码 1 先保证所有分支的代码都已经提交并拉取到最新状态 2 最重要的是需要找到最近一条自己代码还存在的记录 xff0c 然后复制到最近的更早一条的提交记录的id xff0c 比如e36e9e76da144536c196
  • Docker容器进入的4种方式

    Docker容器进入的4种方式 在使用Docker创建了容器之后 xff0c 大家比较关心的就是如何进入该容器了 xff0c 其实进入Docker容器有好几多种方式 xff0c 这里我们就讲一下常用的几种进入Docker容器的方法 进入Do
  • HTTP Basic和Digest认证介绍与计算

    一 说明 web用户认证 xff0c 最开始是get提交 43 把用户名密码存放在客户端的cookie中的形式 xff1b 在意识到这样不安全之后逐渐演变成了post提交 43 把用户凭证放到了服务端的session中的形式 xff08 当
  • TeamViewer 的替代品 ZeroTier + NoMachine

    之前不怎么用 TeamViewer xff0c 最近用的多了 xff0c 特别好用 xff0c 有点上瘾 xff0c 在哪儿都能连家里的 RTX xff0c 太棒了 然后它就开始作了 有没有好的替代方案呢 xff1f 有人推荐向日葵 xff
  • Kubernetes tutorial - K8S 官方入门教程 中文翻译

    官方教程 xff0c 共 6 个小节 每一小节的第一部分是知识讲解 xff0c 第二部分是在线测试环境的入口 kubectl 的命令手册 原文地址 1 创建集群 1 1 使用 Minikube 创建集群 Kubernetes 集群 Kube
  • 两年,从纯小白到腾讯阿里,应届非计算机毕业生的2014互联网求职之路

    0 写在前面 以此文 xff0c 献给自己这两年的青葱岁月 xff0c 感谢淘宝的朗英师兄和微博的旭爷 全栈pm莹姐姐 酷炫石女王 以及我逝去的头发 参照Lucida的 9个offer xff0c 12家公司 xff0c 35场面试 一文
  • 在cmd中使用start运行exe文件闪退问题

    如果我们是使用的bat批处理文件来执行某件事 xff0c 我们可以直接使用 k参数 xff0c 或者pause命令来让容器 cmd 执行完文件后不退出 如果我们是在cmd中使用start或其他命令直接执行任务 xff0c 导致当前容器退出
  • GreenPlum 5.0的安装

    基本环境 xff1a serverIPMDW172 16 16 31SDW1172 16 16 34SDW2172 16 16 35 1 xff1a 检查操作系统是否符合要求 xff0c 以及系统设置 我这里使用的系统是CentOS 操作系
  • 转载:Pixhawk源码笔记八:添加新的参数

    转载 xff1a 新浪 64 WalkAnt 第九部分 添加新的参数 英文参考 xff1a http dev ardupilot com wiki code overview adding a new parameter 本节源自 xff1
  • Ubuntu(Linux) 下 unzip 命令使用详解

    1 功能作用 xff1a 解压缩zip文件 2 位置 xff1a usr bin unzip 3 格式用法 xff1a unzip Z opts modifiers file zip list x xlist d exdir 4 主要参数
  • Linux之Libcurl库的介绍与应用20170509

    一 LibCurl简介 LibCurl是免费的客户端URL传输库 xff0c 支持FTP FTPS HTTP HTTPS SCP SFTP TFTP TELNET DICT FILE xff0c LDAP等协议 xff0c 其主页是http
  • 面试问题之操作系统:动态链接库和静态链接库的区别

    动态链接库是一个可以被其它应用程序共享的程序模块 xff0c 其中封装了一些可以被共享的例程和资源 动态链接库文件名的扩展名一般是dll xff0c 也有可能是drv xff0c sys和fon xff0c 它和可执行文件 exe 非常类似
  • (uC/OS-II学习笔记) 消息邮箱&&消息队列

    原文出处 xff1a http www cnblogs com hebaichuanyeah 与信号量一样 xff0c 消息邮箱与消息列队都是一种事件块 消息邮箱可以在任务间实现信息传递 比如 xff0c 在任务1中发送一条消息 xff0c
  • rosbag使用--记录深度相机数据

    首先看一下教程 xff1a http wiki ros org openni launch Tutorials BagRecordingPlayback 知道了rosbag如何进行使用记录深度数据 但是按照以上教程记录下来的bag file
  • Postman 基本操作学习

    History 所有使用postman发送的request都会保存在这里 点击之后会在当前Tab打开 参考 xff1a Requests History Environments 这里用来设定当前request 发送时使用的环境 xff0c
  • linux内核去掉设备驱动,基于嵌入式Linux内核的系统设备驱动程序开发设计

    引言 Linux是一个遵循POSIX标准的免费操作系统 具有BSD和SYSV的扩展特性 与其他操作系统相比 xff0c 嵌入式Linux系统以其可应用于多种硬件平台 内核高效稳定 源码开放 软件丰富 网络通信和文件管理机制完善等优良特性而正
  • html onmouseover 注释掉,HTML onmouseover事件用法及代码示例

    将鼠标指针移到元素或其子元素上时 xff0c 将发生HTML中的DOM onmouseover事件 用法 在HTML中 xff1a 在JavaScript中 xff1a object onmouseover 61 function mySc
  • stylegan3自己导出的requirements.txt环境文件

    stylegan3官方给的环境文件是 environment yml xff0c 需要用conda安装 在linux上安装总会遇见奇奇怪怪的问题 xff0c 因此我导出requirements txt文件 xff0c 用pip安装 requ
  • html5 在线摄像头,HTML5在线摄像头使用

    HTML5在线摄像头应用 最近在搞一个考试系统 xff0c 系统要求要有随机拍照的功能 xff0c 并且摄像头能够收到js的控制 在线摄像头嘛 xff0c 就那两种实现的方式 xff1a cab或者flash 暂且不论本人从没学过的flas