热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHPJS浏览器实时获取摄像头内容(附代码)

注意浏览器获取摄像头权限时候比较严格,我百度时必须有ssl证书才可以(应该还有别的方法),我自己使用的https协议调用的前端JS

注意

浏览器获取摄像头权限时候比较严格,我百度时必须有ssl证书才可以(应该还有别的方法),我自己使用的https协议调用的

前端JS

<!DOCTYPE html>
<html>
<head><title>人脸注册 - Powered by {:config(&#39;hisiphp.name&#39;)}</title><meta http-equiv&#61;"Access-Control-Allow-Origin" content&#61;"*">
<body><video id&#61;"video"></video>
<canvas id&#61;"canvas" width&#61;"400" height&#61;"230" style&#61;"display: none"></canvas>
<p style&#61;"margin-top: 10px;text-align: center;" id&#61;"returnMsg"><input type&#61;"button" class&#61;"layui-btn layui-btn-normal" value&#61;"返回信息返回信息" >
</p><script src&#61;"https://s3.pstatp.com/cdn/expire-1-M/jquery/3.3.1/jquery.min.js"></script>
<script src&#61;"__PUBLIC_JS__/layer/layer.js"></script>
<script>let video &#61; document.getElementById("video");let canvas &#61; document.getElementById(&#39;canvas&#39;);let context &#61; canvas.getContext(&#39;2d&#39;);//检测摄像头if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {//调用用户媒体并兼容, 访问摄像头getUserMedia({video : {width: 320, height: 240}}, success, error);//摄像头使用成功后进入此方法 !!!returnMsg(&#39;正在检测摄像头...&#39;);} else {layer.alert(&#39;不支持访问用户媒体&#39;, {title: &#39;友情提示&#39;, icon: 2},function () {window.location.href &#61; &#39;https://jujingcc.cn&#39;});}//访问用户媒体设备的兼容方法function getUserMedia(constraints, success, error) {if (navigator.mediaDevices.getUserMedia) {//最新的标准API navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);} else if (navigator.webkitGetUserMedia) {//webkit核心浏览器navigator.webkitGetUserMedia(constraints,success, error)} else if (navigator.mozGetUserMedia) {//firfox浏览器navigator.mozGetUserMedia(constraints, success, error);} else if (navigator.getUserMedia) {//旧版APInavigator.getUserMedia(constraints, success, error);}}//检测成功的回调 创建播放器function success(stream) {//兼容webkit核心浏览器let CompatibleURL &#61; window.URL || window.webkitURL;//将视频流设置为video元素的源console.log(stream);video.srcObject &#61; stream;video.play(); //视频开始播放}//检测失败的回调function error(error) {alert(&#96;访问用户摄像头失败${error.name}, ${error.message}&#96;);}//摄像头使用成功后进入此方法function returnMsg(msg){//计时器 1秒后执行此代码setTimeout(function(){//对用户的友好回复$(&#39;#returnMsg&#39;).show();$(&#39;#returnMsg input&#39;).val(msg);//该方法中将视频流截取一张图片 并提交后台 详细请继续看tututu();}, 1000);}function tututu(){context.drawImage(video, 0, 0); //上色 视频流截取一张图片并向画布上添加该图片var image_code &#61; convertImageToBase64(); //从 canvas 提取图片 imageif(!image_code){layer.alert(&#39;请先拍照&#39;, {title: &#39;友情提示&#39;, icon: 2});return}$.post("{:url(&#39;login&#39;)}", {&#39;image_code&#39;:image_code}, function(res){if(10000 &#61;&#61; res.code){ //成功的回调layer.alert(res.msg, {title: &#39;友情提示&#39;, icon: 1},function () {window.location.href &#61; &#39;https://jujingcc.cn&#39;});} else{//不成功继续走该方法 并将错误原因返回用户returnMsg(res.msg)}});}//从 canvas 提取图片 imagefunction convertImageToBase64() {var canvas &#61; document.getElementById(&#39;canvas&#39;);//将图片转成url(base64)var img &#61; canvas.toDataURL("image/jpeg", 0.5);return img;}
</script>
</body>
</html>

PHP代码

/** 人脸登录* */public function login(){if(Request()->isPost()){$image_code &#61; input(&#39;image_code&#39;);if(empty($image_code)){return info(10003,&#39;照片为空&#39;);}//处理接收过来的图片$img &#61; str_replace(&#39;data:image/png;base64,&#39;, &#39;&#39;, $image_code);$img &#61; str_replace(&#39;data:image/jpeg;base64,&#39;, &#39;&#39;, $img);$img &#61; str_replace(&#39; &#39;, &#39;&#43;&#39;, $img);//你自己的逻辑} else{return $this->fetch();}}

欢迎各位大佬的指导



推荐阅读
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 本文总结了Java中日期格式化的常用方法,并给出了示例代码。通过使用SimpleDateFormat类和jstl fmt标签库,可以实现日期的格式化和显示。在页面中添加相应的标签库引用后,可以使用不同的日期格式化样式来显示当前年份和月份。该文提供了详细的代码示例和说明。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
author-avatar
简瞳之殇
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有