`
ry.china
  • 浏览: 139801 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

使用flash摄像头拍照的简单实践

    博客分类:
  • java
阅读更多

打开Flash CS3,新建一个Flash文件(Script 2.0)。命名为pagea.fla

第一步:      在库中建立一个视频元件,类型选择:视频(受 ActionScript 控制)。      按F11打开库面板,右键空白地方出现一个弹出菜单,选择“新建视频”,随便起个名字。

第二步:      将视频元件拖到场景中,并调整尺寸到想要的大小。并起名为“camera”。同时在该图层放置两个Button,分别命名为“btnCamera”和“btnUpload”。

第三步:      新建一个图层,命名为“代码层”    点击时间轴第一帧,按F9打开代码面板,粘贴如下代码:

 

//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(160);    

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 = 300;

 tempObj._y = 40;

    tempObj.attachBitmap(lv.bm, 1);        

}    

   

//上传照片到服务器    

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 ;





%>

此时你可以通过访问http://yourserver/pagea.jsp 来访问拍照页面,允许flash访问camera。等待画面出来之后,点击拍照和上传按钮,图片就会上传到服务器的c:\\a.jpg中。

本例仅给出简单参考,你可以根据实际需要设定图片保存的临时目录和文件名,并处理完成过后的提示信息。

 

参考资料:

http://www.aspstat.com/69

http://www.blueidea.com/tech/multimedia/2005/3116.asp

http://www.d8space.com/member/diaryview.do?members(userid)=2&members(id)=49

分享到:
评论
1 楼 老梦a 2012-08-09  
要是保存到数据库,是怎么做呢,数据流这块,不太懂。。(*^__^*)

相关推荐

    flash采集摄像头拍照、截图、上传功能,可直接使用,网页的.zip

    在IT行业中,尤其是在Web开发领域,使用Flash技术来实现摄像头拍照、截图以及上传功能是一种常见的实践。本资源包提供了一套完整的解决方案,适用于那些希望通过网页与用户交互并捕获图像的开发者。以下是对这个...

    flash摄像头拍照(内含详细说明)

    本文将详细探讨"Flash摄像头拍照"这一主题,包括如何使用Flash技术来捕捉摄像头图像,并进行必要的修改。 一、Flash与摄像头集成 Flash是一款强大的多媒体开发平台,由Adobe公司开发,主要用于创建动画、交互式...

    flash摄像头拍照 组建

    这个“flash摄像头拍照组建”涉及到的主要技术包括Flash、ActionScript 3(AS3)以及在线图片处理和上传。以下是对这些知识点的详细说明: 1. Flash:Flash是一款由Adobe公司开发的多媒体软件平台,主要用于创建...

    asp.net+Flash摄像头拍照上传源代码

    在本项目"asp.net+Flash摄像头拍照上传源代码"中,开发者提供了一套完整的解决方案,包括后台ASP.NET的处理逻辑和前台Flash交互部分。 首先,让我们详细了解一下ASP.NET的部分。ASP.NET是Microsoft开发的一个用于...

    flash摄像头示例

    在这个例子中,可能是指向一个教程网站、论坛或作者的主页,以便学习者可以查找更多关于Flash摄像头使用的资源或讨论问题。 总的来说,这个“flash摄像头示例”为初学者提供了一个很好的起点,了解如何在Flash中...

    cam.zip_flash 摄像头

    在IT行业中,尤其是在Web开发领域,使用Flash技术来控制摄像头进行拍照是一种常见的实践。这个"cam.zip_flash 摄像头"的压缩包文件显然包含了与这一功能相关的源代码,特别是其中的"cam.fla"文件,这通常是一个Adobe...

    摄像头拍照程序,调用flash

    标题中的“摄像头拍照程序,调用flash”指的是一个利用摄像头功能的应用程序,它通过集成Flash技术来实现拍照功能。在早期的网页应用中,由于HTML5的Camera API尚未普及,Flash是实现摄像头交互的主要方式。这个程序...

    JavaWeb开发jQuery-webcam摄像头拍照插件

    总结,使用jQuery-webcam插件可以在网页上轻松实现摄像头拍照功能,它依赖于jQuery库,提供了一套简单的API来设置摄像头参数、捕获图像和上传照片。开发者可以根据项目需求灵活配置,提升网站或应用的互动性。通过...

    flash在线拍照

    标题“Flash在线拍照”指的是利用Adobe Flash技术实现的网络摄像头拍照功能。在互联网早期,Flash是一种广泛用于创建交互式内容的平台,它允许用户在网页上进行多媒体互动,包括视频播放、游戏和像在线拍照这样的...

    webcam调用摄像头拍照自定义swf文件

    "webcam调用摄像头拍照自定义swf文件"的主题涉及到Webcam接口编程和Adobe Flash技术,特别是SWF(ShockWave Flash)文件格式的使用。本文将深入探讨这两个核心知识点。 首先,Webcam调用是通过软件或应用程序接口...

    android TextureVIew实现摄像头预览和拍照

    在Android开发中,TextureView是一种可以显示动态图形的视图,它可以用来实现实时的视频流,例如摄像头预览和拍照功能。本教程将详细讲解如何利用TextureView来实现这一目标,并讨论如何优化用户界面。 首先,理解...

    stm32开发板摄像头资料(可拍照)(1)程序下载

    STM32是一款基于ARM Cortex-M内核的微控制器,由意法半导体(STMicroelectronics)生产,广泛应用在嵌入式系统开发中。...通过学习和实践,开发者可以深入了解STM32的摄像头应用,并开发出自己的拍照功能。

    flash拍照的一些看法

    ### Flash摄像头拍照实践详解 #### 一、简介 在Flash CS3中,通过ActionScript可以实现许多有趣的交互功能,比如使用摄像头拍照。本篇文章将详细介绍如何利用Flash CS3结合ActionScript来实现摄像头拍照功能,包括...

    flex web 调用摄像头保持图片

    通过上述知识点的学习和实践,开发者可以构建一个功能完备的Flex Web应用,使用户能够在浏览器中方便地使用摄像头拍照并保存图片。这篇博客文章(链接已给出)可能详细介绍了这个过程,包括示例代码和最佳实践,对于...

    模仿照相机 Flash特效 JS特效

    在网页上,模仿照相机功能意味着创建一个虚拟的相机界面,用户可以通过它进行拍照、预览、甚至应用各种滤镜效果,类似于手机或电脑上的真实摄像头应用。这种功能通常结合HTML5的Canvas元素和Media API来实现。 在...

    ASP.NET-[图片动画]Flash+C#在线拍照源码.zip

    在本项目中,Flash可能被用来捕获和处理来自用户电脑摄像头的实时视频流,提供在线拍照的界面和体验。用户可以通过网页上的Flash组件启动摄像头,进行拍照操作,并实时预览拍摄效果。 C#是.NET Framework的主要编程...

    调用Andriod系统摄像头实现的相机功能

    要开启相机,首先需要请求相关权限,在`AndroidManifest.xml`中添加`&lt;uses-feature&gt;`标签声明使用摄像头,并在运行时请求`CAMERA`权限。 2. **设置相机预览**: 创建一个SurfaceView或TextureView作为相机预览的...

    Flash+C#在线拍照源码_flexphoto.zip

    在flexphoto项目中,Flash部分实现了用户设备摄像头的调用,提供实时预览功能,让用户能够通过浏览器看到摄像头捕捉的画面,并实现点击拍照。这一功能依赖于Flash ActionScript中的Camera类和NetConnection类,...

    android摄像头扫描区域截图

    7. **编码实践**:在实现以上功能时,推荐使用现代的Kotlin语言,利用其特性如协程来简化异步操作,同时遵循Clean Architecture或MVI等设计模式,使代码结构清晰、可测试且易于维护。 综上所述,实现"android摄像头...

Global site tag (gtag.js) - Google Analytics