实现思路如下:

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="启动摄像头" οnclick="javascript:startCam();"  /><input type="button" value="拍照片" οnclick="javascript:capPicture1();"  /><input type="button" value="选中头像区域" οnclick="javascript:selectPic();"  /><input type="button" value="裁剪选中区域" οnclick="javascript:cutSelectedPic()"  /><input type="button" value="提交到服务器端" οnclick="javascript:submitToServer();"  /> <br/><input type="button" value="清除结果" οnclick="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();
%>

jsp证件照实现代码相关推荐

  1. java 页面 分离 实现_JavaBean实现JSP页面和代码分离

    JavaBean实现JSP页面和代码分离以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在JSP编程中 Struts一般 ...

  2. jsp中JAVA代码取select值_jsp获取下拉列表select选择的值 | 学步园

    看下表单的内容: A B C D ----------------------------------------------------------------------------------- ...

  3. 为MyEclipse 9/10中的html/JSP编辑器添加代码自动提示

    为MyEclipse 9/10中的html/JSP编辑器添加代码自动提示 2012年04月08日 ⁄ 开发工具 ⁄ 评论数 6 ⁄ 被围观 3,902 views+ 在myeclipse 9以前的版本 ...

  4. 关于jsp中java代码的使用;

    jsp文件才能写java代码(写在script中),单纯的js文件是不可以的,比如还有el表达式这种,都是不能写在js文件中的 jsp中嵌入java代码可以有三种格式: 第一种:<%! 声明:% ...

  5. js中变量和jsp中java代码中变量互相访问解决方案

    1.js变量获取jsp页面中java代码的变量值.  方法:var JS变量名 = <%=JAVA变量名 %>   2.java代码获取js变量的值.  说明:在JSP中:Java部分是在 ...

  6. eclipse jsp 写 js 代码提示_基于jsp+servlet的宠物管理系统

    源码编号:B-E00002  点击查看分类规则 项目类型:Java EE项目(java web项目) 项目名称:基于jsp+servlet的宠物管理系统(Pet) 当前版本:V1.0.0版本 难度等级 ...

  7. 为什么jsp写script代码报错_JSP 报错:ReferenceError: $ is not defined

    运行 SpringMVC 项目时,JSP 的代码报错: ReferenceError: $ is not defined JSP 相关代码如下: ... <script src="js ...

  8. js变量和java变量相等,js中变量和jsp中java代码中变量互相访问解决方案

    1.js变量获取jsp页面中java代码的变量值. 方法:var JS变量名 = 我们常常会将js文件和jsp文件分开写,在js文件中,上面的方法似乎不管用了. 也可以通过变通的方法来解决: a.js ...

  9. jsp中java代码if_jsp中jstl标签的类似 if - else 语句 的语法

    在jsp中引入jstl的标签库和函数库 1. jsp中传递参数,经过action,存储到request中 href="${pageContext.request.contextPath}/n ...

最新文章

  1. 写给工程师的十条精进原则
  2. Eclipse使用技巧 快捷键
  3. Python用拉格朗日法进行数据横向插值
  4. 为什么大家都在吹捧Python?
  5. 看完微软大神写的求平均值代码,我意识到自己还是 too young 了
  6. 迈克尔 杰克逊mv_用杰克逊流式传输大型JSON文件– RxJava常见问题解答
  7. springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理
  8. 在Simulink中调整增益映射 Tune Gain Schedules in Simulink
  9. 需求变更,产品经理的良心也会痛!
  10. oracle clob 导出csv,在Apex把csv导入数据库Clob字段再导入到各自对应列的解决方法...
  11. ACER 4741G
  12. [乡土民间故事_徐苟三传奇]第廿九回_蠢财主落水知上当
  13. 批处理一键打开Windows远程桌面
  14. 【低功耗蓝牙BLE】连接事件和相关参数
  15. PLM的系统调研表分享
  16. 为什么说海尔智家是行业穿越寒冬的“模范生”?
  17. 操作系统 第一章习题
  18. 文件大小long转KB,MB,GB
  19. python-imutils包简介使用
  20. 2007年西北工业大学计算机专业

热门文章

  1. Tomcat环境SSL证书安装教程
  2. 有趣的游戏编程学习网站
  3. 辽宁省劳动经济学校计算机专业,辽宁省劳动经济学校
  4. Google Earth Engine ——时间序列分析(MODIS数据分析海上漏油事件)1.5万字
  5. 再读米老师的教学思想方法
  6. YOLOv5的参数与性能指标
  7. How to install Bromine3 RC2
  8. java中计算一个方法执行时长,耗费单位(秒)
  9. linux确定刻录机目录,Linux下如何检测DVD刻录机的设备名及写入速度
  10. day1架子鼓的实现