[转]使用flash摄像头拍照的简单实践 2010-12-06 15:45:32| 分类: FLASH编程专区 | 标签: |举报 |字号大
中
小 订阅
打开Flash CS3,新建一个Flash文件(Script 2.0)。命名为pagea.fla
第一步: 在库中建立一个视频元件,类型选择:视频(受 ActionScript 控制)。 按F11打开库面板,右键空白地方出现一个弹出菜单,选择“新建视频”,随便起个名字。
第二步: 将视频元件拖到场景中,并调整尺寸到想要的大小。并起名为“camera”。同时在该图层放置两个Button,分别命名为“btnCamera”和“btnUpload”。
第三步: 新建一个图层,命名为“代码层” 点击时间轴第一帧,按F9打开代码面板,粘贴如下代码:
//view plaincopy to clipboardprint?
//camera是在场景中一个Video实例
//注意如果要想获取自己想要拍照大小,先做一个你想要大小的FLV文件,然后video选Embedded
camera.clear();
//摄像头控制对象
var cam:Camera = Camera.get();
if ( cam == null){
//code here if client no camera installed
}
//init variable
photow = new Number(100);
photoh = new Number(120);
cam.setMode(photow, photoh, 10, true);
camera.attachVideo(cam); //绑定摄像头视频流到video
//该对象用于实现发送数据到网页可get或post
var lv:LoadVars;
lv = new LoadVars();
//当按下拍照按纽
btnCamera.onRelease = function ()
{
//获取当前视频画片
saveCamera();
//...
};
//toolbar.btnCameraRe.onRelease = function(){
// ...
//saveCamera();
//}
function saveCamera(){
//新建一个bitmapdate对象并获取video上的图像信息
lv.bm = new flash.display.BitmapData(photow, photoh,true, 0);
lv.bm.draw(camera);
//photoPreview是在场景中的一个Movie clip实例,用于输出bitmapdate实现照片预缆
var tempObj = _root.createEmptyMovieClip("photo", 100);
tempObj._x = 63.0;
tempObj._y = 53.0;
tempObj._width = 100;
tempObj._height = 120;
tempObj.attachBitmap(lv.bm, 1);
camera.attachVideo(null);
}
btnCell.onRelease = function (){
_root.photo._visible = false;
camera.attachVideo(cam);
//...
};
//上传照片到服务器
btnUpload.onRelease = function(){
//读取图片矩形范围的像素信息,并以字符串的形式连接起来 begin
i = lv.bm.height;
j = lv.bm.width;
rgb_array = "";
for (y = i - 1; y >= 0; y--)
{
for (x = 0; x < j; x++)
{
color = lv.bm.getPixel(x, y).toString(16);
rgb_array = rgb_array + (color + ",");
} // end of for
} // end of for
lv.height = i;
lv.width = j;
lv.rgb_array = rgb_array;
//读取图片矩形范围的像素信息,并以字符串的形式连接起来 end
//发送到要处理的页面URL,可以在页面通过Request.Form["名称"]获取值,如:Request.Form["rgb_array"]
lv.sendAndLoad("pageb.jsp", lv, "POST");
//当页面返回信息即页面处理完成后,触发的行为
/*
lv.onLoad = function (success)
{
if (success)
{
//跳转到其他页面
getURL("pagea.jsp", "_self");
}
};*/
}
第四步: 按F12把flash导出成为html,你可以得到pagea.fla,pagea.html, pagea.swf和AC_RunActiveContent.js。 把pagea.html重命名为pagea.jsp,放置到你的jsp服务器目录下
第五步: 新建一个文件叫做pageb.jsp。粘贴如下代码
<%@page import="java.io.*,java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*,javax.imageio.stream.*"%><%
String width = request.getParameter("width");
String height = request.getParameter("height");
int w = Integer.parseInt(width);
int h = Integer.parseInt(height);
try {
//OutputStream fos = response.getOutputStream();
OutputStream fos = new FileOutputStream(new File("c:\\a.jpg"));
BufferedImage bf = new BufferedImage(w, h,
BufferedImage.TYPE_INT_RGB);
String data = request.getParameter("rgb_array");
String[] ds = data.split(",");
int leng=ds.length-1;
for (int i = bf.getHeight()-1; i>=0 ; i--) {
for (int j = 0; j < bf.getWidth(); j++) {
int d = Integer.parseInt(ds[leng-(i*w+(bf.getWidth()-j-1))], 16);
//System.out.print(d);
bf.setRGB(j, i, d);
}
}
ImageWriter writer = null;
ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(bf);
Iterator iter = ImageIO.getImageWriters(type, "jpg");
if (iter.hasNext()) {
writer = (ImageWriter) iter.next();
}
if (writer == null) {
return ;
}
IIOImage iioImage = new IIOImage(bf, null, null);
ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.2f);
// save to file
//ImageOutputStream outputStream2 = ImageIO.createImageOutputStream(response.getOutputStream());
ImageOutputStream outputStream2 = ImageIO.createImageOutputStream(fos);
writer.setOutput(outputStream2);
writer.write(null, iioImage, param);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("w = " + w + ",h=" + h);
response.setContentType("image/jpeg");
return ;
%>
分享到:
相关推荐
### Web富客户端互动游戏开发与应用 #### 一、引言 随着计算机科学和技术的快速发展,网络应用程序的设计和实现方式也在不断演变。传统的基于HTML页面的网络程序已经无法满足现代用户对于更高层次、更丰富用户体验...
浅析Web富客户端技术的应用.pdf
"基于Ajax的Web富客户端设计" Ajax 是一种构建网站的强大方法,可以将传统的界面转化成交互性的应用程序。桌面应用程序一般很快,具有漂亮的用户界面和非凡的动态性,可以单击选择、输入、打开菜单和子菜单、到处...
DWZ富客户端框架设计目标是简单实用、扩展方便、快速开发、RIA思路、轻量级 DWZ支持用html扩展的方式来代替javascript代码, 基本可以保证程序员不董javascript, 也能使用各种页面组件和ajax技术. 如果有特定需求也...
富客户端工作流程是一种在Web应用开发中常见的设计模式,它为用户提供更为丰富、交互性更强的体验。在传统的Web应用中,用户与服务器之间的交互通常是单向的,即用户发送请求,服务器处理后返回结果。而在富客户端...
Java富客户端(Rich Client)开发是一种创建功能强大、交互丰富的桌面应用程序的方法,它与传统的Web应用或瘦客户端(Thin Client)有所不同。富客户端通常提供更高级的用户界面,包括动画、拖放功能、复杂的表格和...
通过以上特性,DWZ富客户端框架为Web开发者提供了强大的前端开发支持,无论是初创项目还是大型企业级应用,都能从中受益。在实际应用中,开发者可以根据项目需求选择合适的组件和功能,构建出高效、美观且易于维护的...
【标题】"基于easyUI核心的富客户端实战开发视频教程"涵盖了在Web应用程序开发中使用easyUI框架构建富客户端界面的实践知识。EasyUI是一个基于jQuery的轻量级且易于使用的UI库,专为简化HTML5和CSS3的前端开发而设计...
### .NET实现DWZ富客户端框架 #### 一、前言概要 ##### 1. DWZ框架介绍 DWZ富客户端框架是一个基于jQuery RIA框架的轻量级前端开发工具,它主要用于简化Ajax开发过程中的复杂度。该框架不仅支持HTML扩展方式调用...
本主题将详细介绍如何在Flex中通过Web服务获取客户端的IP地址,以及在本地测试时如何处理局域网和本机IP地址。 1. **Flex与Web服务交互**: Flex应用通常通过HTTP或AMF(Action Message Format)与Web服务进行通信...
Java 极富客户端程序(Rich Client Application,RCA)是一种采用Java技术构建的桌面应用程序,它提供丰富的用户界面和强大的功能,能够提供与Web应用相媲美的用户体验。Aerith是这样一个基于Java2D图形库的RCA,...
DWZ富客户端框架是一款基于JavaScript和Ajax技术的开源Web应用开发框架,主要用于构建交互性强、用户体验优秀的Web应用。这个框架的设计目标是简化前端开发,提升开发效率,同时提供强大的功能和良好的可扩展性。 *...
ExtJS是一种基于JavaScript的开源富客户端框架,专为构建企业级Web应用程序而设计。它提供了丰富的组件库,包括数据网格、表单、图表和其他UI元素,使得开发者可以创建功能强大且用户友好的交互式界面。这个"ExtJs...
DWZ,全称为Design Without Zones,是一款优秀的开源JavaScript UI框架,专注于构建富客户端Web应用。DWZ JUI是DWZ的扩展版本,它提供了更全面的功能,包括对PDF、Word和CHM等文档的支持,以及在`doc`目录下的帮助...
GWT(Google Web Toolkit)是一种基于Java的Ajax框架,能够帮助开发者快速构建富客户端应用。使用GWT可以生成一个富客户端电子商务应用框架,该框架包括客户端的用户界面层、逻辑处理层和数据存储层。 三、富客户端...
**DWZ富客户端框架使用手册** DWZ,全称Dynamic Web Zone,是一个基于Ajax技术的开源JavaScript框架,专为构建富互联网应用(Rich Internet Applications,RIA)而设计。该框架致力于提供一套完整的前端解决方案,...
DWZ富客户端框架即jQuery富客户端框架.基于jQuery实现纯html+css+js富客户端UI组件框架. 布署到Apache或IIS等WEB应用下, 打开index.html就可看到demo. 在线演示地址 http://dwz.duqn.com 欢迎大家提出建议,我们将...
DWZ富客户端框架即jQuery富客户端框架.基于jQuery实现纯html+css+js富客户端UI组件框架. 布署到Apache或IIS等WEB应用下, 打开index.html就可看到demo. 在线演示地址 http://dwz.duqn.com Google Code下载: ...