Capturar imagem da WebCam e salvar com PHP

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.

new JPEGEncoder( 100 )

 

Fique por dentro de nossas novidades, ideias e atualizações