1.前台jsp页面代码
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>video cap control demo</title>
<script type="text/javascript" src="./js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="test1.js"></script>
</head>
<body>
<form action="<%=request.getContextPath()%>/servlet/VideoCap" id="cap_form" method="post">
<input type="hidden" id="picData" name="picData">
<object classid="clsid:34681DB3-58E6-4512-86F2-9477F1A9F3D8"
id="WebVideoCap1" codebase="<%=request.getContextPath()%>/cabs/Package.cab#version=1,0,0,50" width="636" height="238">
<param name="Visible" value="0">
<param name="AutoScroll" value="0">
<param name="AutoSize" value="0">
<param name="AxBorderStyle" value="1">
<param name="Caption" value="WebVideoCap">
<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">
</object>
<hr/>
<input type="button" value="隐藏控制按钮" id="btn_hidden_btns">
<input type="button" value="显示控制按钮" id="btn_show_btns">
<input type="button" value="开始捕获" id="btn_start">
<input type="button" value="停止捕获" id="btn_stop">
<input type="button" value="照相" id="btn_cap_only">
<input type="button" value="照相并用ajax方式提交" id="btn_cap">
<input type="button" value="照相并用非ajax方式提交" id="btn_submit">
<input type="button" value="不照相直接提交" id="btn_submit_only">
<input type="button" value="只获取base64数据" id="btn_getdata_only">
<input type="button" value="清除数据" id="btn_clear">
<hr/>
jpeg格式base64编码数据内容:
<textarea rows="30" cols="50" id="base64_jpeg" name="base64_jpeg"></textarea>
bmp格式base64编码数据内容:
<textarea rows="30" cols="50" id="base64_bmp" name="base64_bmp"></textarea>
</form>
</body>
</html>
------------------------------------------------------------------
2.js文件 test1.js
String.prototype.replaceAll = function(s1, s2) {
return this.replace(new RegExp(s1, "gm"), s2);
}
$(function() {
$('#btn_hidden_btns').click(function() {
document.getElementById('WebVideoCap1').hiddenControllButtons();
document.getElementById('WebVideoCap1').autofill(636, false);
}), $('#btn_show_btns').click(function() {
document.getElementById('WebVideoCap1').showControllButtons();
document.getElementById('WebVideoCap1').autofill(636, true);
}), $('#btn_start').click(function() {
document.getElementById('WebVideoCap1').start();
}), $('#btn_stop').click(function() {
document.getElementById('WebVideoCap1').stop();
}), $('#btn_cap_only').click(function() {
document.getElementById('WebVideoCap1').cap();
}), $('#btn_cap').click(function() {
document.getElementById('WebVideoCap1').cap();
document.getElementById('base64_jpeg').value = document
.getElementById('WebVideoCap1').jpegBase64Data;
document.getElementById('base64_bmp').value = document
.getElementById('WebVideoCap1').bmpBase64Data;
document.getElementById("picData").value = document
.getElementById('WebVideoCap1').jpegBase64Data;
ajax_post();
}), $('#btn_submit_only').click(function() {
document.getElementById('WebVideoCap1').cap();
document.getElementById('base64_jpeg').value = document
.getElementById('WebVideoCap1').jpegBase64Data;
document.getElementById('base64_bmp').value = document
.getElementById('WebVideoCap1').bmpBase64Data;
document.getElementById("picData").value = document
.getElementById('WebVideoCap1').jpegBase64Data;
alert(document.getElementById("picData").value.length);
document.forms[0].submit();
}), $('#btn_getdata_only').click(function() {
document.getElementById('base64_jpeg').value = document
.getElementById('WebVideoCap1').jpegBase64Data;
document.getElementById('base64_bmp').value = document
.getElementById('WebVideoCap1').bmpBase64Data;
document.getElementById("picData").value = document
.getElementById('WebVideoCap1').jpegBase64Data;
alert(document.getElementById("picData").value.length);
}), $('#btn_clear').click(function() {
document.getElementById('WebVideoCap1').clear();
}), $('#btn_submit').click(function() {
document.getElementById('WebVideoCap1').cap();
document.getElementById('base64_jpeg').value = document
.getElementById('WebVideoCap1').jpegBase64Data;
document.getElementById('base64_bmp').value = document
.getElementById('WebVideoCap1').bmpBase64Data;
document.getElementById("picData").value = document
.getElementById('WebVideoCap1').jpegBase64Data;
alert(document.getElementById("picData").value.length);
document.forms[0].submit();
});
});
function ajax_post() {
var base64_data = document.getElementById('WebVideoCap1').jpegBase64Data;
$.ajax({
url : 'http://localhost:8080/VideoCap/servlet/VideoCap4Ajax',
type : 'POST',
dataType : 'jason',
data : {
picData : "'" + base64_data + "'"
},
timeout : 1000,
success : callbackfun
});
}
function callbackfun(data) {
var obj = eval('(' + data + ')');
if ('ok' == obj.savestatus) {
alert('照片采集成功!');
}
}
3.java代码
-------------------------------------------------------------------
package com.demo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import sun.misc.BASE64Decoder;
/**
* Servlet implementation class VideoCap
*/
public class VideoCap extends HttpServlet {
private static final long serialVersionUID = 1L;
private String savePath;
/**
* @see HttpServlet#HttpServlet()
*/
public VideoCap() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
savePath=config.getServletContext().getRealPath("/")+"//pics//";
File tmp_path=new File(savePath);
tmp_path.mkdirs();
System.out.println("照片数据保存路径:"+savePath);
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String pic_base_64_data=request.getParameter("picData");
//System.out.println("图片数据:"+pic_base_64_data);
BASE64Decoder decode=new BASE64Decoder();
byte[] datas=decode.decodeBuffer(pic_base_64_data);
String filename=String.valueOf(System.currentTimeMillis())+".jpg";
File file=new File(this.savePath+filename);
OutputStream fos=new FileOutputStream(file);
System.out.println("照片文件名称:"+filename);
fos.write(datas);
fos.close();
response.setContentType("text/html");
PrintWriter out=response.getWriter();
out.print("<img src='"+request.getContextPath()+"//pics//"+filename+"'/>");
out.flush();
out.close();
}
}
分享到:
相关推荐
本主题聚焦于如何使用JSP(Java Server Pages)调用和控制摄像头进行拍照,以及涉及到的相关技术。这里我们将深入探讨JSP、ASP、PHP调用摄像头的原理和实践方法。 首先,JSP是一种基于Java的服务器端脚本语言,它...
这里涉及到了文件上传和文件系统的操作,JSP提供了诸如`Part`接口和`DiskFileItemFactory`类等工具,可以方便地处理文件上传。 在Java后端,可以使用`javax.imageio.ImageIO`类来读写图片。例如,我们可以先将Base...
【描述】"jsp+flash摄像头操作源码下载"指的是提供的源代码主要通过JSP来处理后端逻辑,而Flash作为前端展示和与用户摄像头交互的工具。Flash在当时是实现网页多媒体和交互功能的常见选择,能够跨平台访问用户的电脑...
本文将详细讲解如何在JSP中集成Flash来调用用户的摄像头,并进行拍照操作。 首先,我们需要理解JSP和Flash的角色。JSP是Java的一种动态网页技术,它允许我们在HTML页面中嵌入Java代码,从而实现服务器端的数据处理...
2. **Servlets**:虽然JSP主要负责生成HTML响应,但处理复杂的逻辑和I/O操作(如读取摄像头数据)更适合用Servlet来完成。通常,JSP会发送请求到Servlet,Servlet处理完摄像头数据后,再将结果返回给JSP展示。 3. *...
在IT行业中,将JavaServer Pages (JSP)与Adobe Flash技术结合可以创建丰富的交互式Web应用,例如利用摄像头拍照并实时展示。以下是对这个主题的详细解析。 首先,JSP是一种服务器端脚本语言,用于生成动态网页内容...
在IT行业中,实现一个基于JSP、HTML和.NET的摄像头截图并上传的功能是一个常见的需求,尤其是在开发交互式网站或Web应用程序时。以下是一份详细的知识点解析,涵盖了这个功能实现的关键技术点: 1. **HTML5 WebRTC*...
截图 上传 功能"涉及到的技术和步骤包括:HTML5的摄像头访问、文件API、JSP的文件上传处理、.NET的HTTP请求处理、MyEclipse的项目开发环境、JavaScript的前端交互以及服务器端的文件存储和数据库操作。每个环节都...
本示例中,我们关注的是如何使用JavaServer Pages(JSP)技术来调用本地摄像头,并通过Servlet处理捕获的图像数据,最终将其存储到数据库中。下面将详细解释这一过程涉及的技术和步骤。 首先,JSP(JavaServer ...
标题中的“多种方式ASP调用摄像头拍照并保存插件”是指在不同的Web开发环境中,如ASP、ASP.NET、JSP和PHP,实现调用用户电脑或服务器上的摄像头进行拍照,并将拍摄的照片保存到服务器的技术解决方案。这个插件可能...
// 创建和操作摄像头 } catch (Exception e) { e.printStackTrace(); } finally { // 释放资源 } ``` 以上步骤是基础的Java调用摄像头拍照的流程。如果需要更高级的功能,比如预览、调整摄像头参数或者处理...
此外,由于提到了“远程”这个词,我们可以推测此软件可能支持远程拍照,允许用户通过网络连接在不同设备上操作摄像头进行拍摄。 在标签“摄像头拍照软件”中,我们可以理解这是软件的主要特性,即它的核心功能是与...
介绍了关于Flash打开本地摄像头的功能实现;
针对提供的标题和描述,我们可以深入探讨这些技术如何协同工作来实现“扫描二维码直接调用摄像头自定义扫一扫”的功能。 首先,JavaScript是客户端脚本语言,它使得网页具有交互性。在本案例中,JavaScript被用于...
`photobooth_min.js`是一个JavaScript库,可以帮助我们方便地操作摄像头和图片处理。在JavaScript中,我们需要使用`navigator.mediaDevices.getUserMedia()`方法请求访问用户的摄像头。当用户同意后,我们可以将...
JSP是一种动态网页技术,而Flash则提供了在网页中集成多媒体元素的能力,包括摄像头访问。 首先,我们要明白,由于HTML5的兴起,现代浏览器大多支持使用`<input type="file">`标签直接调用用户设备的摄像头进行拍照...
Java提供了Java Media Framework (JMF) 和 OpenIMAJ 这样的库来访问和操作摄像头。JMF 是一种平台无关的框架,用于处理多种媒体类型,包括视频流。OpenIMAJ 是一个开源的Java库,特别适合于计算机视觉任务,如捕获...
在现代的Web应用中,利用HTML5技术与设备硬件交互的能力越来越强大,其中之一就是通过H5调用摄像头进行扫码操作。这个"**H5调用摄像头扫码.zip**"压缩包包含了一些关键文件,用于实现H5页面扫描二维码的功能。下面...
在移动应用开发中,调用手机摄像头拍照并保存到本地是一项常见的功能,广泛应用于社交、电商、生活服务等各种类型的APP中。本知识点将详细介绍如何实现这一功能,主要涉及Android和iOS两大主流移动操作系统。 首先...