camera.swf java_java调用摄像头保存图片上传功能
在项目中要用到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调用摄像头保存图片上传功能相关推荐
- 微信js调用摄像头拍照上传_微信JSSDK实现打开摄像头拍照再将相片保存到服务器...
在微信端打开手机摄像头拍照,将拍照图片保存到服务器上需要使用到微信的JSSDK接口,主要使用到了拍照或从手机相册中选图接口(chooseImage),上传图片接口(uploadImage) 参考资料: ...
- vueh5调用摄像头拍照_H5调用摄像头拍照上传
拍照 拍照 let canvas=document.getElementById("canvas"); let context=canvas.getContext("2d ...
- 微信公众号H5开发——调用相册和摄像头并上传服务器
之前的文章介绍了关于微信JSSDK调用,下面介绍一下其中的一个最常用的功能--调用相册和摄像头 使用此功能之前先参考:微信JSSDK 在通过了config接口验签成功之后,我们就可以调用微信JSSDK ...
- 树莓派摄像头拍照上传阿里云自定义OCR识别
树莓派加按钮,实现每次按下按钮摄像头拍照上传OCR识别.本次使用的是自定义识别. 主函数 主要是拍照和自定义OCR两个板块 # -*- coding: utf-8 -*- ""&q ...
- 家庭IOT监测之摄像头数据上传ONENET
本篇目标:将摄像头OV7670的照片数据,转换成BMP二进制,上传到ONENET平台,用于远程监测. 材料准备: 之前移植的温湿度及红外修改工程:(温湿度及红外修改工程),继续往里面移植摄像头驱动上传 ...
- thinkphp 调用php文件上传,ThinkPHP实现带验证码的文件上传功能实例
本文实例讲述了ThinkPHP实现带验证码的文件上传功能.分享给大家供大家参考.具体实现方法如下: ThinkPHP上传文件非常的简单我们只要调用一个文件上传类UploadFile就可以快速的实现上传 ...
- 关于微信内置浏览器,打开图片上传功能,调用的问题
关于微信内置浏览器,打开图片上传功能,调用的问题 前段时间,项目完结测试的时候,同事打开魅族手机测试,无意中发现一个奇葩的问题! 描述: 显示的是文件系统,列表式的,没有调用相机的功能图标,为什么呢? ...
- wordpress调用 php文件上传,wordpress上传的文件在哪
wordpress上传的文件在哪? WordPress默认的上传文件的目录是/wp-content/uploads,而且文件是以年月的形式组织的,虽然我们可以去掉按照年月组织的选项,或者更改存储路径, ...
- java模拟摄像头传输照片_java调用摄像头保存图片
[实例简介] java调用摄像头保存图片,通过Face++和Javacv判断如果视频中含有人脸,保存图片到本地指定路径! [实例截图] [核心代码] c93f0c67-a726-4643-a4c1-0 ...
最新文章
- 正确使用索引(sql优化),limit分页优化,执行计划,慢日志查询
- Java智慧社区商业级别项目源码,拿来学习真不错
- mac回退jdk版本_Mac 的 jdk 版本配置
- C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
- python加密反编译_对Python源码进行加密及反编译前后对比
- hadoop入门简介
- 怎么查看表用了那个序列_3套阴瑜伽序列,让你身心平衡
- java servlet,action,struts,struts2输出流中文编码问题
- 具体化和实例化的应用
- matlab多图形相交,用MATLAB作出柱面x^2+y^2=4 和柱面x^2+z^2=4 相交的图形.
- u盘打开提示格式化怎么办?有用的方法来了
- 服务网关 Zuul基本使用
- 机器学习面试题1~60
- GAN生成对抗网络基础知识
- ueditor编辑器遇到的问题
- EventBus3 简单使用及注意点
- animation 只触发一次的解决办法
- 不懂SEO?一篇文章带你精通SEO优化
- window和linux传文件之tftpd32工具
- matlab与amesim匹配,AMESim-MATLAB联合仿真详细设置+部分问题解决步骤
热门文章
- 教程:编写自己的CDI扩展
- MacOSX环境上的多个Java JDK
- JavaFX 2.0条形图和散点图(以及JavaFX 2.1 StackedBarCharts)
- HH SaaS电商系统管理后台的商品规格编辑
- java读取codetable_解析Java对象的equals()和hashCode()的使用
- wxpython 多线程_在wxPython中使用线程连续更新GUI的好方法?
- mysql按加号没反应_请各位大哥给小老弟解疑答惑一下 为什么点击加号没有反应?感谢...
- 嵌入式linux应用程序实例,嵌入式Linux应用程序访问物理地址的实例
- 指标实现层级_企业如何构建核心指标系统,实现业务运营效率提升90%?
- C语言中for语句的执行过程是什么?