实现思路如下:
1.设置好拍照背景,如使用红布或者蓝布等等,白墙也可以。
2.选择高清的摄像头,如罗技等高清摄像头,支持的分辨率越高越好。
3.使用ImageCapOnWeb处理拍照。
4.调用控件的start方法开始获取摄像头视频
5.调用cap()方法拍照
6.调用selectRect方法选中头像区域,不满意的话可以手动微调。
7.调用cutSelected方法裁剪使用选中区域
8.保存拍照结果。
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>控件测试页面</title> <script type="text/javascript"> function startCam(){ var capActivexObject=document.getElementById('cap1'); //启动摄像头 capActivexObject.start(); } function capPicture1(){ var capActivexObject=document.getElementById('cap1'); capActivexObject.cap(); //控制摄像头拍照 } function selectPic(){ var capActivexObject=document.getElementById('cap1'); capActivexObject.selectRect(0.3,0.25,0.6,0.8);//具体含义请查看文档 } function cutSelectedPic(){ var capActivexObject=document.getElementById('cap1'); capActivexObject.cutSelected(); } function submitToServer(){ //读取控件的拍照结果到hidden输入项中 var base64_data1 = document.getElementById('cap1').jpegBase64Data; if (base64_data1.length==0) { alert('请先拍照!'); return false; } document.getElementById('picData1').value=base64_data1; document.getElementById('picExt1').value='.jpg'; /*注意不同的服务器端技术要配置不同的接收数据的url,可以参考submit.html的示 如asp.net的程序员可以查看submit.aspx,php程序员可以查看submit.php,asp程序员可以查看submit.asp */ //document.forms[0].action="http://localhost:8080/pages/submit.jsp"; alert('请先打开demo6.html配置服务器端程序参数再继续测试!'); return false; document.forms[0].submit(); } </script> </head> <body> <form method="post" > <input type="hidden" id="picData1" name="picData1"/> <input type="hidden" id="picExt1" name="picExt1"/> <input type="hidden" id="picData2" name="picData2"/> <input type="hidden" id="picExt2" name="picExt2"/> <p> <input type="button" value="启动摄像头" onclick="javascript:startCam();" /> <input type="button" value="拍照片" onclick="javascript:capPicture1();" /> <input type="button" value="选中头像区域" onclick="javascript:selectPic();" /> <input type="button" value="裁剪选中区域" onclick="javascript:cutSelectedPic()" /> <input type="button" value="提交到服务器端" onclick="javascript:submitToServer();" /> <br/> <input type="button" value="清除结果" onclick="javascript:document.getElementById('cap1').clear();" /> </p> <object classid="clsid:34681DB3-58E6-4512-86F2-9477F1A9F3D8" id="cap1" width="640" height="480" codebase="../cabs/ImageCapOnWeb.cab#version=2,0,0,0"> <param name="Visible" value="0"> <param name="AutoScroll" value="0"> <param name="AutoSize" value="0"> <param name="AxBorderStyle" value="1"> <param name="Caption" value="scaner"> <param name="Color" value="4278190095"> <param name="Font" value="宋体"> <param name="KeyPreview" value="0"> <param name="PixelsPerInch" value="96"> <param name="PrintScale" value="1"> <param name="Scaled" value="-1"> <param name="DropTarget" value="0"> <param name="HelpFile" value> <param name="PopupMode" value="0"> <param name="ScreenSnap" value="0"> <param name="SnapBuffer" value="10"> <param name="DockSite" value="0"> <param name="DoubleBuffered" value="0"> <param name="ParentDoubleBuffered" value="0"> <param name="UseDockManager" value="0"> <param name="Enabled" value="-1"> <param name="AlignWithMargins" value="0"> <param name="ParentCustomHint" value="-1"> <param name="licenseMode" value="2"> <param name="key1" value=""> <param name="key2" value=""> </object> </form> <script type="text/javascript"> document.all.cap1.SwitchWatchOnly(); //切换到只显示摄像头画面形式,隐藏编辑按钮等图标. </script> </body> </html>
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.io.*" errorPage="" %> <% String savePath=config.getServletContext().getRealPath("/")+"//"; File tmp_path=new File(savePath); tmp_path.mkdirs(); System.out.println("照片数据保存路径:"+savePath); String pic_base_64_data=request.getParameter("picData"); //如果下面的代码输出true则说明需要调整服务器软件工作参数,解决接受post数据的大小限制问题,例如 //tomcat的话需要在server.xml中配置maxPostSize="0"来解除上传数据的大小限制 <Connector port="8080" protocol="HTTP/1.1" // connectionTimeout="20000" // redirectPort="8443" maxPostSize="0"/> // System.out.println(null==pic_base_64_data); System.out.println("base64 string length:"+pic_base_64_data.length()); String fileFormat=request.getParameter("picExt"); sun.misc.BASE64Decoder decode=new sun.misc.BASE64Decoder(); byte[] datas=decode.decodeBuffer(pic_base_64_data); String filename=String.valueOf(System.currentTimeMillis())+fileFormat; File file=new File(savePath+filename); OutputStream fos=new FileOutputStream(file); System.out.println("图片文件名称:"+filename); fos.write(datas); fos.close(); out.print("<a href='" + request.getContextPath()+"/"+ filename + "'>click here</a>"); out.flush(); out.close(); %>
相关推荐
在IT行业中,尤其是在Web开发领域,使用摄像头功能已经成为一种常见的需求,例如在线证件照拍摄、实时视频聊天等。本文将详细讲解如何在JSP(JavaServer Pages)中集成摄像头拍照并保存照片的功能。 首先,我们需要...
在当前的互联网应用中,实时的图像捕捉和上传功能已经成为许多网站不可或缺的一部分,例如在线考试、远程面试、在线证件照制作等场景。本项目名为“JSP网上在线拍照源码”,它利用Adobe Flex插件实现了在网页上进行...
这个程序在Web应用领域具有较高的实用价值,尤其是在需要远程身份验证或者在线证件照拍摄的场景下。 首先,我们要了解Flex是什么。Flex是一种用于构建富互联网应用程序(RIA)的技术,它由Adobe公司推出,基于...
员工表可能包含诸如员工ID、姓名、职位、入职日期等文本字段,而LONGBLOB字段则用于存储与员工相关的图片,如头像或证件照。LONGBLOB类型能够处理大量的二进制数据,非常适合存储图像文件。 Servlet是Java编程语言...
标题中的“多种方式ASP调用摄像头拍照并保存插件”是指在不同的Web开发环境中,如ASP、ASP.NET、...这个插件对于那些需要在Web应用中集成摄像头功能,例如在线证件照上传、远程会议、在线教育等场景,是非常有价值的。
- 证件照拍摄:用户可以在家中自行拍摄符合规格的证件照片,上传至系统进行处理。 - 视频会议:作为辅助工具,用于捕捉和分享参会者的实时图像。 - 虚拟试衣间:在电子商务中,用户可以利用摄像头试穿虚拟服装。 ...
在本文中,我们将深入探讨如何使用jQuery-webcam插件实现在Web页面上调用...这在诸如在线证件照上传、虚拟试衣间等场景中有着广泛的应用。了解并掌握这一技术,对于提升用户体验和开发互动性强的Web应用具有重要意义。
- 支持生活照、证件照、身份证芯片照、带网纹照片等多种类型的照片识别,增强了系统的适用性和准确性。 3. **活体检测** - 通过分析图片中的细节特征来判断图片中的人脸是否为真实存在的人脸,有效防止翻拍等欺诈...
学校系统可能涉及文件上传,如学生证件照、作业提交等。Java的Commons-IO和Commons-FileUpload库可以方便地处理这些功能。 9. **报表生成与导出**: JasperReports或iText库可以帮助生成统计报表,如学生出勤记录...