Um exemplo simples que captura a imagem da Webcam e salva em uma pasta no Servidor. Este exemplo utiliza a classe ImageSnapshot para capturar uma imagem baseado em um objeto. Ele esta gerando um JPG com 85% de qualidade, configurada em new JPEGEncoder( 85 ). Você também poderá usar a classe PNGEncoder() se quiser salvar em PNG.
<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" backgroundColor="#f6f6f6" creationComplete="application1_creationCompleteHandler(event)" viewSourceURL="231/index.html"> <fx:Script> <![CDATA[ import mx.controls.Alert; import mx.events.FlexEvent; import mx.graphics.ImageSnapshot; import mx.graphics.codec.JPEGEncoder; private var imagemBase64:String protected function application1_creationCompleteHandler(event:FlexEvent):void { var camera:Camera=Camera.getCamera(); camera.setMode( 320, 240, 10 ); webcam.attachCamera( camera ); } private function capturarImagem():void { // JPEGEncoder você configura a qualidade do JPEG No caso esta 85% var imagemWebcam:ImageSnapshot=ImageSnapshot.captureImage( webcam, 0, new JPEGEncoder( 85 )); imagemBase64=ImageSnapshot.encodeImageAsBase64( imagemWebcam ); imgWebcam.source=imagemWebcam.data btSalvar.enabled=true; } protected function salvar():void { var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, loader_completeHandler); var variables:URLVariables = new URLVariables(); variables.imagem = imagemBase64; var request:URLRequest = new URLRequest(); request.method = URLRequestMethod.POST; request.data = variables; request.url = "/code/231/recebeImagem.php"; loader.load( request ); } private function loader_completeHandler( event:Event ):void { var resposta:String = (event.currentTarget as URLLoader).data; if ( resposta == 'erro' ) Alert.show( "Erro ao salvar imagem", "Erro" ); else link.text = "http://flex.eduardokraus.com/code/231/" + resposta } protected function btVisualizar_clickHandler(event:MouseEvent):void { capturarImagem(); } protected function btSalvarDireto_clickHandler(event:MouseEvent):void { capturarImagem(); salvar(); } protected function btSalvar_clickHandler(event:MouseEvent):void { salvar() } protected function link_clickHandler(event:MouseEvent):void { navigateToURL( new URLRequest( link.text )); } ]]> </fx:Script> <!-- Texto Superior --> <s:Label x="10" y="10" fontSize="20" fontWeight="bold" text="Capturar imagem da WebCam e salvar com PHP"/> <!-- Barra Horizontal --> <mx:HRule x="10" y="49" width="690"/> <mx:VideoDisplay id="webcam" x="10" y="59" width="320" height="240"/> <s:Image id="imgWebcam" x="338" y="59" width="320" height="240"/> <mx:Button id="btVisualizar" x="10" y="307" label="Pré Visualizar" click="btVisualizar_clickHandler(event)"/> <mx:Button id="btSalvarDireto" x="122" y="307" label="Visualizar e Salvar" click="btSalvarDireto_clickHandler(event)"/> <mx:Button id="btSalvar" x="338" y="307" label="Salvar no servidor" enabled="false" click="btSalvar_clickHandler(event)"/> <s:Label x="10" y="338" color="#0048FF" textDecoration="underline" id="link" click="link_clickHandler(event)" useHandCursor="true"/> </s:Application>
Veja como ficará este exemplo compilado.
Source aqui.