Flex4实现Camera拍照功能!!

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               width="500" height="350" creationComplete="application1_creationCompleteHandler(event)">
    <fx:Script>
        <![CDATA[
            import mx.controls.Alert;
            import mx.events.CloseEvent;
            import mx.events.FlexEvent;
            import mx.graphics.codec.PNGEncoder;
                      private const CAMERA_WIDTH:int=400;
            private const CAMERA_HEIGHT:int=300;
            private var _camera:Camera;
            private var _pngEn:PNGEncoder;
            private var _bitmapData:BitmapData;
            private var _fr:FileReference;
            
            protected function application1_creationCompleteHandler(event:FlexEvent):void
            {
                _pngEn=new PNGEncoder;
                _fr=new FileReference;
                
                checkCamera();
            }
            
            private function checkCamera(event:CloseEvent=null):void
            {
                _camera=Camera.getCamera();
                if(_camera!=null){
                    _camera.setMode(400,300,24);
                    _camera.setQuality(0,100);
                    
                    cameraDisplay.attachCamera(_camera);
                    cutCameraBtn.enabled=true;
                }else{
                    Alert.okLabel="重试";
                    Alert.show("找不到摄像头,程序将重新查找","对不起",4,null,checkCamera);
                }
            }
            
            private function getDateString():String{
                var date:Date=new Date;
                return "拍照"+date.getFullYear()+ (date.getMonth()+1)+date.getDate()+date.getHours()+date.getMinutes()+date.getSeconds()+date.getMilliseconds();
            }
            
            protected function cutCameraBtn_clickHandler(event:MouseEvent):void
            {
                _bitmapData=new BitmapData(CAMERA_WIDTH,CAMERA_HEIGHT);
                _bitmapData.draw(cameraDisplay);
                
                var bytes:ByteArray=_pngEn.encode(_bitmapData);
                _fr.save(bytes,getDateString()+".png");
                
                //release
                bytes.length=0;
                _bitmapData.dispose();
            }
            
        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- 将非可视元素(例如服务、值对象)放在此处 -->
    </fx:Declarations>
    
    <mx:VideoDisplay id="cameraDisplay"
                     width="400"
                     height="300"
                     y="10"
                     x="50"/>
    <mx:Button id="cutCameraBtn"
               label="拍照"
               click="cutCameraBtn_clickHandler(event)"
               enabled="false"
               x="227"
               y="318"/>
</s:Application>

你可能感兴趣的:(Flex4实现Camera拍照功能!!)