`
linxuexin
  • 浏览: 26757 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

flash摄像头拍照实现原理分析

阅读更多

最近一段时间,由于网站的需要,做了一个在线拍照的flash,刚开始的时候也是什么都不懂,对flash也是了解点皮毛,经过不断的在网上查阅资料。经过一周的努力,终于被我搞定了。

主要用到Camera类,MovieClip 类,BitmapData类,LoadVars类,如果要实现这个功能,必须先去了解这几个类

实现的过程如下。

1,先在库中新建一个视频元件,把视频元件拖放到场景中,取名为my_video,新建一个按纽元件,取名为btn_print.

2,加入以下代码实现视频的播放
myCam = Camera.get();
myCam.setMode(266,200,10);
my_video.attachVideo(myCam);

3 ,以下代码实现图片的获得和上传
import flash.display.BitmapData;
import flash.geom.Rectangle;
import flash.geom.ColorTransform;

class PrintScreen {
 
 public var addListener:Function
 public var broadcastMessage:Function
 
 private var id:   Number;
 public  var record:LoadVars;
 
 function PrintScreen(){
  AsBroadcaster.initialize( this );
 }
 public function print(mc:MovieClip, w:Number, h:Number){
  broadcastMessage("onStart", mc);
  w = Math.floor(w);
  h = Math.floor(h);
  var bmp:BitmapData = new BitmapData(w, h, false);
  record = new LoadVars();
  record.width  = w
  record.height = h
  record.cols   = 0
  record.rows   = 0
  bmp.draw(mc);
  id = setInterval(copysource, 1, this, mc, bmp);
 }
 
 private function copysource(scope, movie, bit){
  var pixel:Number
  var str_pixel:String
  scope.record["px" + scope.record.rows] = new Array();
  for(var a = 0; a < bit.width; a++){
   pixel     = bit.getPixel(a, scope.record.rows )
   str_pixel = pixel.toString(16)
   scope.record["px" + scope.record.rows].push(str_pixel)
  }
 
  scope.record.rows += 1
  if(scope.record.rows >= bit.height){
   clearInterval(scope.id)
   bit.dispose();
  }
 }
}

4 以下代码在服务器段接受数据,生成图片(jsp版)
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();
   BufferedImage bf = new BufferedImage(w, h,
     BufferedImage.TYPE_INT_RGB);

   for (int i = 0; i < bf.getHeight(); i++) {
    String data = request.getParameter("px" + i);
    String[] ds = data.split(",");
    for (int j = 0; j < bf.getWidth(); j++) {
     int d = Integer.parseInt(ds[j], 16);
     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 null;
   }
   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());
   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 null;

分享到:
评论

相关推荐

    摄像头拍照

    本文将深入探讨“flash摄像头拍照”这一主题,解析其背后的原理和技术细节。 首先,我们要理解什么是“闪光灯”(Flash)。在摄影领域,闪光灯是一种光源设备,用于在光线不足的环境下提供额外的照明,确保拍摄出...

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

    在提供的“摄像头资料”压缩包中,可能包含有源码、原理图、配置文件、用户手册等,这些都是学习和实现STM32摄像头功能的重要参考资料。通过学习和实践,开发者可以深入了解STM32的摄像头应用,并开发出自己的拍照...

    asp.net 调用摄像头

    本文将深入探讨如何在ASP.NET环境中利用Web技术实现摄像头的调用,并结合给定的描述,我们将讨论从JavaEye获取的代码片段在创建此类功能中的应用。 首先,理解ASP.NET调用摄像头的基本原理:它通常涉及到HTML5的`*;...

    网络照相机-FlashCS3.0制作的

    通过分析和学习这个项目,开发者不仅可以掌握Flash CS3.0和AS3.0的基础知识,还能深入理解网络照相机的实现机制,以及如何在浏览器环境中处理图像和与服务器进行通信。这对于开发类似的应用,如在线美图工具或视频...

    JSP 网上在线拍照源码

    对这些文件进行分析和理解,可以帮助开发者更深入地了解如何将Flex插件与JSP结合起来,实现在线拍照功能。 总结,JSP网上在线拍照源码利用了Flex插件和JSP技术,实现了浏览器端的实时拍照并上传到服务器的功能。...

    ov7607摄像头+STM32驱动(有源码 有图)

    OV7607是一款常用的CMOS图像传感器,广泛应用于各种嵌入式系统和消费类电子产品中,如摄像头模组。STM32则是一款基于ARM Cortex-M内核的微控制器,以其高性能、低功耗和丰富的外设接口在嵌入式领域广受欢迎。将OV...

    MT6252原理图资料

    - **摄像头接口**:支持摄像头模块连接,实现拍照和视频录制功能。 - **扩展中断接口**:用于接收外部中断信号,提高系统的响应速度。 - **ADC接口**:模数转换器接口,用于将模拟信号转换为数字信号。 - **JTAG接口...

    FLEX在线照相

    如果要深入理解这个在线照相应用的工作原理,可以从分析这两份文件入手,特别是library.swf中的ActionScript代码和catalog.xml中描述的资源结构。 学习这个项目可以涉及以下知识点: 1. **Adobe Flex框架**:包括...

    在线视频摄像.Net程序

    通过分析这些源代码,我们可以更深入地了解程序的工作原理,学习如何实现类似的在线视频摄像功能。 总的来说,这个在线视频摄像.Net程序展示了如何结合Flash的实时视频处理能力和.Net的强大后端处理功能,构建一个...

    MT9D111 原理图

    本文档将根据提供的“MT9D111 原理图”进行深入分析,帮助读者理解其电路设计的关键要素及其工作原理。 #### 二、关键组件及功能说明 ##### 1. MT9D111 图像传感器模块 - **引脚说明**: - **VDD_VCM**:电源引脚...

Global site tag (gtag.js) - Google Analytics