在项目中要用到jsp页面实现网页采集摄像头图像,并实现上传的功能,页面主要js调用的,所以可以使用多种语言php,asp等都可以使用,而且是跨浏览器的。

可以整合的到SSH项目中和struts1或者struts2项目中

使用方法1:

下载 printscreen4web-jsp.war(最下面有下载地址),然后放到tamcat目录webapp文件夹下面,启动tomcat,访问http://127.0.0.1:8080/printscreen4web-jsp/

主要调用文件 :1.index.html.2avatar.jsp

String imagepath1="";

//编辑页面中包含 camera.swf 的 HTML 代码

public String renderHtml(String id,String basePath,String input)

{

String outinput="";

try {

outinput = URLDecoder.decode(input);

}catch(Exception e)

{

System.out.println("解码错误!");

}

String[] tmp_input=outinput.split("@");//input传递的类型和uid

//System.out.println(input+","+tmp_input.length);

String uc_api =URLEncoder.encode(basePath+"upload/avatar.jsp");

String urlCameraFlash = "camera.swf?nt=1&inajax=1&appid=1&input="+input+"&uploadSize=1000&ucapi="+uc_api;

urlCameraFlash = "";

return urlCameraFlash;

}

public String getFileExt(String fileName) {

// 下面取到的扩展名错误,只有三位,而如html的文件则有四位

// extName = fileName.substring(fileName.length() - 3, fileName.length()); //扩展名

int dotindex = fileName.lastIndexOf(".");

String extName = fileName.substring(dotindex, fileName.length());

extName = extName.toLowerCase(); //置为小写

return extName;

}

private byte[] getFlashDataDecode(String src)

{

char []s=src.toCharArray();

int len=s.length;

byte[] r = new byte[len / 2];

for (int i = 0; i < len; i = i + 2)

{

int k1 = s[i] - 48;

k1 -= k1 > 9 ? 7 : 0;

int k2 = s[i + 1] - 48;

k2 -= k2 > 9 ? 7 : 0;

r[i / 2] = (byte)(k1 << 4 | k2);

}

return r;

}

public boolean saveFile(String path,byte[]b){

try{

FileOutputStream fs = new FileOutputStream(path);

fs.write(b, 0, b.length);

fs.close();

return false;

}catch(Exception e){

return true;

}

}

%>

String uploadtype= request.getParameter("uploadtype");

//图片上传类型:头像,logo,图片分别对应参数:head,logo,pic没有传递,默认为PIC

if("".equals(uploadtype))

{

uploadtype="pic";

}

//最终裁剪好的图片存放位置

String uid=request.getParameter("uid");

imagepath1=uploadtype+"/"+uid+"_big.jpg";

String action= request.getParameter("a");

//String input=request.getParameter("input");

String path = request.getContextPath();

String infoFilePath="";

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

if(action==null){

%>

body{

margin: 0;

border: 0;

}

function updateavatar() {

var img1="";

if(window.opener.document.getElementById("imgpath1"))

{

window.opener.document.getElementById("imgpath1").value=img1;

window.opener.document.getElementById("showimg1").src="upload/"+img1;

}

window.close();

}

out.print(renderHtml("5",basePath,URLEncoder.encode(uploadtype+"@"+uid)));

%>

}else if("uploadavatar".equals(action)){//上传临时图片,可以自己实现

//System.out.println(action);

UploadUtil uploadUtil = new UploadUtil();

boolean isOk = uploadUtil.initParam(pageContext,request);

if (isOk == false)

{

System.out.println("页面出错:" + uploadUtil.getMsg());

return;

}

//上传附件

isOk = uploadUtil.uploadFile("");

if (isOk == false)

{

System.out.println("页面出错:" + uploadUtil.getMsg());

return;

}

Map map = uploadUtil.getUploadFiles();

if (map == null)

{

System.out.println("页面出错:上传附件失败");

}

if (map.size() == 0)

{

System.out.println("页面出错:没有上传附件");

return;

}

//获取附件文件名和存储文件路径

for (Iterator iter = map.keySet().iterator(); iter.hasNext();)

{

infoFilePath = (String) iter.next();

String infoFileName = (String) map.get(infoFilePath);

//infoFilePath=infoFilePath.substring(infoFilePath.lastIndexOf("\\")+1);

//System.out.println(infoFilePath);

//infoFilePath=infoFilePath.substring(infoFilePath.indexOf("webapps")+8);

infoFilePath=infoFilePath.replaceAll("\\\\", "/");

//System.out.println(basePath+"upload"+infoFilePath);

out.clear();

out.print(basePath+"upload"+infoFilePath);

}

}else if("rectavatar".equals(action)){//缩略图

String avatar1 = request.getParameter("avatar1");//大

String avatar2 = request.getParameter("avatar2");//中

String avatar3 = request.getParameter("avatar3");//小

String output ="";

try {

output = URLDecoder.decode(request.getParameter("input"));

}catch(Exception e)

{

System.out.println("解码错误!");

}

String[] tmp_input=output.split("@");//input传递的类型和uid

String pathff = request.getSession().getServletContext().getRealPath("/")+ "upload\\";

String imgfilepath=pathff+tmp_input[0];

imagepath1=imgfilepath+"/"+tmp_input[1]+"_big.jpg";

out.clear();

boolean a1=saveFile(imagepath1,getFlashDataDecode(avatar1));

if(a1){

out.print("<?xml version=\"1.0\" ?>");

}else{

out.print("<?xml version=\"1.0\" ?>");

}

}

%>

camera.swf java_java调用摄像头保存图片上传功能相关推荐

  1. 微信js调用摄像头拍照上传_微信JSSDK实现打开摄像头拍照再将相片保存到服务器...

    在微信端打开手机摄像头拍照,将拍照图片保存到服务器上需要使用到微信的JSSDK接口,主要使用到了拍照或从手机相册中选图接口(chooseImage),上传图片接口(uploadImage) 参考资料: ...

  2. vueh5调用摄像头拍照_H5调用摄像头拍照上传

    拍照 拍照 let canvas=document.getElementById("canvas"); let context=canvas.getContext("2d ...

  3. 微信公众号H5开发——调用相册和摄像头并上传服务器

    之前的文章介绍了关于微信JSSDK调用,下面介绍一下其中的一个最常用的功能--调用相册和摄像头 使用此功能之前先参考:微信JSSDK 在通过了config接口验签成功之后,我们就可以调用微信JSSDK ...

  4. 树莓派摄像头拍照上传阿里云自定义OCR识别

    树莓派加按钮,实现每次按下按钮摄像头拍照上传OCR识别.本次使用的是自定义识别. 主函数 主要是拍照和自定义OCR两个板块 # -*- coding: utf-8 -*- ""&q ...

  5. 家庭IOT监测之摄像头数据上传ONENET

    本篇目标:将摄像头OV7670的照片数据,转换成BMP二进制,上传到ONENET平台,用于远程监测. 材料准备: 之前移植的温湿度及红外修改工程:(温湿度及红外修改工程),继续往里面移植摄像头驱动上传 ...

  6. thinkphp 调用php文件上传,ThinkPHP实现带验证码的文件上传功能实例

    本文实例讲述了ThinkPHP实现带验证码的文件上传功能.分享给大家供大家参考.具体实现方法如下: ThinkPHP上传文件非常的简单我们只要调用一个文件上传类UploadFile就可以快速的实现上传 ...

  7. 关于微信内置浏览器,打开图片上传功能,调用的问题

    关于微信内置浏览器,打开图片上传功能,调用的问题 前段时间,项目完结测试的时候,同事打开魅族手机测试,无意中发现一个奇葩的问题! 描述: 显示的是文件系统,列表式的,没有调用相机的功能图标,为什么呢? ...

  8. wordpress调用 php文件上传,wordpress上传的文件在哪

    wordpress上传的文件在哪? WordPress默认的上传文件的目录是/wp-content/uploads,而且文件是以年月的形式组织的,虽然我们可以去掉按照年月组织的选项,或者更改存储路径, ...

  9. java模拟摄像头传输照片_java调用摄像头保存图片

    [实例简介] java调用摄像头保存图片,通过Face++和Javacv判断如果视频中含有人脸,保存图片到本地指定路径! [实例截图] [核心代码] c93f0c67-a726-4643-a4c1-0 ...

最新文章

  1. 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
  2. Java智慧社区商业级别项目源码,拿来学习真不错
  3. mac回退jdk版本_Mac 的 jdk 版本配置
  4. C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
  5. python加密反编译_对Python源码进行加密及反编译前后对比
  6. hadoop入门简介
  7. 怎么查看表用了那个序列_3套阴瑜伽序列,让你身心平衡
  8. java servlet,action,struts,struts2输出流中文编码问题
  9. 具体化和实例化的应用
  10. matlab多图形相交,用MATLAB作出柱面x^2+y^2=4 和柱面x^2+z^2=4 相交的图形.
  11. u盘打开提示格式化怎么办?有用的方法来了
  12. 服务网关 Zuul基本使用
  13. 机器学习面试题1~60
  14. GAN生成对抗网络基础知识
  15. ueditor编辑器遇到的问题
  16. EventBus3 简单使用及注意点
  17. animation 只触发一次的解决办法
  18. 不懂SEO?一篇文章带你精通SEO优化
  19. window和linux传文件之tftpd32工具
  20. matlab与amesim匹配,AMESim-MATLAB联合仿真详细设置+部分问题解决步骤

热门文章

  1. 教程:编写自己的CDI扩展
  2. MacOSX环境上的多个Java JDK
  3. JavaFX 2.0条形图和散点图(以及JavaFX 2.1 StackedBarCharts)
  4. HH SaaS电商系统管理后台的商品规格编辑
  5. java读取codetable_解析Java对象的equals()和hashCode()的使用
  6. wxpython 多线程_在wxPython中使用线程连续更新GUI的好方法?
  7. mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...
  8. 嵌入式linux应用程序实例,嵌入式Linux应用程序访问物理地址的实例
  9. 指标实现层级_企业如何构建核心指标系统,实现业务运营效率提升90%?
  10. C语言中for语句的执行过程是什么?