收藏 分销(赏)

flex 截取摄像头保存本地图片.docx

上传人:s4****5z 文档编号:8952901 上传时间:2025-03-09 格式:DOCX 页数:7 大小:29.39KB
下载 相关 举报
flex 截取摄像头保存本地图片.docx_第1页
第1页 / 共7页
flex 截取摄像头保存本地图片.docx_第2页
第2页 / 共7页
点击查看更多>>
资源描述
  flex 截取摄像头保存本地图片 分类: flex32010-10-07 16:54 880人阅读 评论(3) 收藏 举报 Main.xml   [xhtml] view plaincopy 1. <?xml version="1.0" encoding="utf-8"?>   2. <mx:Application xmlns:mx=" layout="absolute" fontSize="12" creationComplete="init()">   3.    4.    5.     <mx:Script>   6.         <!--[CDATA[   7.             import mx.containers.Canvas;   8.             import mx.controls.Alert;   9.             import mx.core.FlexBitmap;   10.             import mx.core.FlexShape;   11.             import mx.core.UIComponent;   12.             import mx.events.DragEvent;   13.             import mx.graphics.codec.PNGEncoder;   14.             import mx.rpc.events.ResultEvent;   15.                16.                17.             private var c:Canvas;   18.             private var pt:Point;   19.             //private var shape:FlexBitmap;   20.             private var pbitData:BitmapData;   21.                22.             //创建摄像头   23.             private function camInit():void   24.             {   25.                 var cam:Camera=Camera.getCamera();   26.                 if (cam == null)   27.                 {   28.                     Alert.show("你没有摄像头!");   29.                 }   30.                 /*  else if(cam.currentFPS==0){   31.                     Alert.show("摄像头被占用!");   32.                 }  */   33.                 else   34.                 {   35.                     cam.setMode(400,300,30); //设置宽、高   36.                     video.attachCamera(cam);   37.                 }   38.    39.             }   40.                41.             //查看图片   42.             private function viewPhoto():void   43.             {   44.                 var bData:BitmapData=new BitmapData(video.width,video.height);   45.                 bData.draw(video);   46.                 var bp:Bitmap=new Bitmap(bData);   47.                 this.img.source=bp;   48.             }   49.             //保存图片到本地   50.             private function savePhoto(evt:MouseEvent):void   51.             {   52.                 var png:PNGEncoder=new PNGEncoder();   53.                 var imgArr:ByteArray=png.encode(pbitData);   54.                 //保存到本地   55.                 var file:FileReference=new FileReference();   56.                 file.save(imgArr,"myphoto.png");   57.                    58.                 //上传到服务器   59.                 /*var req:URLRequest=new URLRequest("");   60.                 req.method="post";   61.                 var param:URLVariables=new URLVariables();   62.                 req.contentType="application/octet-stream";   63.                 req.data=imgArr;   64.                 var loder:URLLoader=new URLLoader();   65.                 loder.load(req);   66.                    67.                 loder.addEventListener(Event.COMPLETE,resultHandle);*/   68.                    69.             }   70.    71.             //后台上传完成,提示   72.             private function resultHandle(e:ResultEvent):void{   73.                 Alert.show("上传完成");   74.             }   75.         /*===============================================*/   76.                77.             private var template:UIComponent;   78.             private var downPoint:Point;   79.             //初始化   80.             private function init():void{   81.                 downPoint = new Point();   82.                 template = new UIComponent();   83.                 //截取后双击保存   84.                 template.doubleClickEnabled=true;   85.                 template.addEventListener(MouseEvent.DOUBLE_CLICK,savePhoto);   86.                    87.                 template.x = img.x;   88.                 template.y = img.y;   89.                 addChild( template );   90.                    91.                 //显示截取的图片   92.                 /* cutOutShape = new FlexBitmap();   93.                 var uic:UIComponent = new UIComponent();   94.                 uic.addChild( cutOutShape );   95.                 addChild( uic );   96.                 uic.x = 450;   97.                 uic.y = 69; */   98.    99.             }   100.                101.             //鼠标按下,绘制椭圆矩形框   102.             private function mousedown(e:MouseEvent):void{         103.                 downPoint.x = img.mouseX;   104.                 downPoint.y = img.mouseY;   105.                    106.                 template.graphics.clear();   107.                 img.addEventListener( MouseEvent.MOUSE_MOVE, overhandle );//添加鼠标移动事件   108.                    109.             }   110.             private function overhandle(evt:MouseEvent):void{   111.                 template.graphics.clear();//清空   112.                 template.graphics.lineStyle( 1, 0x0000FF );//设置线样式   113.                 template.graphics.beginFill( 0xFFFFFF, 0.2 );   114.                 //画圆角矩形   115.                 template.graphics.drawRoundRect( downPoint.x, downPoint.y, img.mouseX - downPoint.x - 2, img.mouseY - downPoint.y - 2, 20, 20 );   116.             }   117.             //鼠标松开,停止绘画   118.             private function mouseup(e:MouseEvent):void{   119.                 img.removeEventListener( MouseEvent.MOUSE_MOVE, overhandle );   120.                    121.                 template.graphics.endFill();   122.                    123.                 if( template.transform.pixelBounds.width != 0 )   124.                 {   125.                     //保存裁剪图片为BitmapData   126.                     pbitData= DisplayObjectTransformer.cutOutSuper( img, template );   127.                 }   128.             }   129.                130.                131.         ]]-->   132.     </mx:Script>   133.     <mx:VideoDisplay id="video" x="23" y="10" width="430" height="320"/>   134.     <mx:Button x="461" y="40" label="Camera" click="camInit()"/>   135.     <mx:Image id="img" x="512" y="106" width="221" height="183" toolTip="双击保存图片到本地"    136.          source="1.png" mouseDown="mousedown(event)"   137.          mouseUp="mouseup(event)"/>   138.     <mx:Button x="546" y="40" label="viewPhoto" click="viewPhoto()"/>   139.     <mx:Button x="664" y="40" label="savePhoto" click="savePhoto(event)"/>   140. </mx:Application>   DisplayObjectTransformer.as(使用了高手写的截取转化BitmapData类)   [java] view plaincopy 1. package    2. {   3.     import flash.display.BitmapData;   4.     import flash.display.DisplayObject;   5.     import flash.geom.Matrix;   6.     import flash.geom.Rectangle;   7.    8.     /**  9.      *  DisplayObjectTransformer 类有两个静态函数:一个用来裁剪矩形;一个用来裁剪任意形状。  10.      */   11.     public class DisplayObjectTransformer   12.     {   13.            14.         /**  15.          *  构造函数  16.          *  <p>本类所有方法均为静态方法,不应创建实例。</p>  17.          */   18.         public function DisplayObjectTransformer()   19.         {   20.                21.         }   22.            23.            24.            25.         //------------------------------------------------------------   26.         //   27.         //  裁剪   28.         //   29.         //------------------------------------------------------------   30.         /**  31.          *  裁剪指定矩形区域并返回一个包含结果的 BitmapData 对象。  32.          *  33.          *  @param target 需要裁剪的显示对象。  34.          *  35.          *  @param width 位图图像的宽度,以像素为单位。  36.          *  37.          *  @param height 位图图像的高度,以像素为单位。  38.          *  39.          *  @param distanceX 切割矩形左上角的点到显示对象矩形左上角的点的水平距离。注意:左上角的点不一定就是注册点(0, 0)外,变形过的显示对象就是一个例外。  40.          *  41.          *  @param distanceY 切割矩形左上角的点到显示对象矩形左上角的点的垂直距离。注意:左上角的点不一定就是注册点(0, 0)外,变形过的显示对象就是一个例外。  42.          *  43.          *  @param transparent 指定裁剪后的位图图像是否支持每个像素具有不同的透明度。默认值为 true(透明)。若要创建完全透明的位图,请将 transparent 参数的值设置为 true,将 fillColor 参数的值设置为 0x00000000(或设置为 0)。将 transparent 属性设置为 false 可以略微提升呈现性能。  44.          *  45.          *  @param fillColor 用于填充裁剪后的位图图像区域背景的 32 位 ARGB 颜色值。默认值为 0x00000000(纯透明黑色)。  46.          *  47.          *  @returns 返回裁剪后的 BitmapData 对象。  48.          */   49.         public static function cutOutRect( target:DisplayObject, distanceX:Number, distanceY:Number, width:Number, height:Number, transparent:Boolean = true, fillColor:uint = 0x00000000 ):BitmapData   50.         {   51.             var m:Matrix = target.transform.matrix;   52.             m.tx -= target.getBounds( target.parent ).x + distanceX;   53.             m.ty -= target.getBounds( target.parent ).y + distanceY;   54.                55.             var bmpData:BitmapData = new BitmapData( width, height, transparent, fillColor );   56.             bmpData.draw( target, m );   57.                58.             return bmpData;   59.         }   60.            61.            62.            63.         /**  64.          *  超级裁剪工具!可裁剪任意形状!给定一个裁剪目标和一个模板,就可根据模板裁剪出形状相配的 BitmapData 数据。  65.          *  66.          *  @param target 需要裁剪的显示对象。  67.          *  68.          *  @param template 裁剪模板,可以是任意形状。  69.          *  70.          *  @returns 返回裁剪后的 BitmapData 对象。  71.          */   72.         public static function cutOutSuper( target:DisplayObject, template:DisplayObject ):BitmapData   73.         {   74.             var rectTarget:Rectangle = target.transform.pixelBounds;   75.             var rectTemplate:Rectangle = template.transform.pixelBounds;   76.             var targetBitmapData:BitmapData = DisplayObjectTransformer.cutOutRect( target, 0, 0, rectTarget.width, rectTarget.height, true, 0x00000000 );   77.             var templateBitmapData:BitmapData = DisplayObjectTransformer.cutOutRect( template, 0, 0, rectTemplate.width, rectTemplate.height, true, 0x00000000 );   78.                79.             for( var pixelY:int = 0; pixelY < rectTemplate.height; pixelY++ )   80.             {   81.                 for( var pixelX:int = 0; pixelX < rectTemplate.width; pixelX++ )   82.                 {   83.                     if( templateBitmapData.getPixel( pixelX, pixelY ) != 0 )   84.                     {   85.                         var color:uint = targetBitmapData.getPixel32( pixelX + rectTemplate.x - rectTarget.x, pixelY + rectTemplate.y - rectTarget.y );   86.                         templateBitmapData.setPixel32( pixelX, pixelY, color );   87.                     }   88.                 }   89.             }   90.                91.             return templateBitmapData;   92.                93.         }   94.            95.            96.            97.     }   98. }   分享到:  · 上一篇:SQL2005服务无法启动
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服