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。粘贴如下代码



   1. <%@page import="java.io.*,java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*,javax.imageio.stream.*"%><%  
   2.  
   3. String width = request.getParameter("width");  
   4.  
   5. String height = request.getParameter("height");  
   6.  
   7. int w = Integer.parseInt(width);  
   8.  
   9.   int h = Integer.parseInt(height);  
  10.  
  11. try {  
  12. 
  13.    //OutputStream fos = response.getOutputStream();  
  14.  
  15.     OutputStream fos = new FileOutputStream(new File("c:\\a.jpg"));  
  16.  
  17.     BufferedImage bf = new BufferedImage(w, h,  
  18.  
  19.       BufferedImage.TYPE_INT_RGB);  
  20.  
  21.      String data = request.getParameter("rgb_array");  
  22.  
  23.      String[] ds = data.split(",");  
  24.  
  25.     int leng=ds.length-1;  
  26.  
  27.    for (int i = bf.getHeight()-1; i>=0 ; i--) {    
  28.  
  29.     for (int j = 0; j < bf.getWidth(); j++) {  
  30.  
  31.      int d = Integer.parseInt(ds[leng-(i*w+(bf.getWidth()-j-1))], 16);  
  32.  
  33.      //System.out.print(d);  
  34.  
  35.       bf.setRGB(j, i, d);  
  36.  
  37.      }  
  38.  
  39.     }  
  40.
  41.     ImageWriter writer = null;  
  42.  
  43.     ImageTypeSpecifier type = ImageTypeSpecifier.createFromRenderedImage(bf);  
  44.  
  45.     Iterator iter = ImageIO.getImageWriters(type, "jpg");  
  46.  
  47.    if (iter.hasNext()) {  
  48.  
  49.      writer = (ImageWriter) iter.next();  
  50.  
  51.     }  
  52.  
  53.    if (writer == null) {  
  54.  
  55.     return ;  
  56.  
  57.     }  
  58.  
  59.     IIOImage iioImage = new IIOImage(bf, null, null);  
  60.
  61.     ImageWriteParam param = writer.getDefaultWriteParam();  
  62.  
  63.     param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);  
  64.  
  65.     param.setCompressionQuality(0.2f);  
  66.   
  67.    // save to file  
  68.  
  69.    //ImageOutputStream outputStream2 = ImageIO.createImageOutputStream(response.getOutputStream());  
  70.  
  71.     ImageOutputStream outputStream2 = ImageIO.createImageOutputStream(fos);  
  72.  
  73.     writer.setOutput(outputStream2);  
  74.  
  75.     writer.write(null, iioImage, param);  
  76. 
  77.     fos.close();  
  78. 
  79.    } catch (Exception e) {  
  80.  
  81.     e.printStackTrace();  
  82.  
  83.    }  
  84.  
  85. System.out.println("w = " + w + ",h=" + h);  
  86.  
  87. response.setContentType("image/jpeg");  
  88.  
  89
  90. %> 

你可能感兴趣的:(html,jsp,Flash,J#,actionscript)