Mais um experimento, Webcam Colorida
A classe BitmapData é realmente muito divertida. Neste experimento foi usado o método ‘threshold’ para realizar a colorização da imagem recebida da webcam.
Caso você tenha uma webcam, logo abaixo do vídeo coloquei o arquivo para você poder ver o experimento em funcionamento.
O Actionscript usado nesta aplicação está no final da página, a explicação está comentada no próprio script.
Webcam Colorida
This movie requires Flash Player 8.
//importando as classes que serão utilizadas import flash.display.*; import flash.geom.*; //objeto Camera var camera:Camera = Camera.get(); //anexar o objeto Camera ao objeto video que esta no movieClip mcCam mcCam.webcam.attachVideo(camera); //objeto BitmapData da imgem final var imagem:BitmapData = new BitmapData(camera.width, camera.height, false, 0); //objeto BitmapData que conterá a imagem modificada var imagemContainer:BitmapData = new BitmapData(camera.width, camera.height, false, 0); //objeto retangulo, define a área da imagem fonte no método threshold var retangulo = new Rectangle(0, 0, camera.width, camera.height); //objeto ponto, os pontos correspondem ao topo na esquerda da imagem fonte no método threshold var ponto = new Point(0, 0); //função que desenhará a nova imagem function atualizarImagem():Void{ //desenha a imagem da webcam no objeto BitmapData imagemContainer.draw(mcCam.webcam); //através do método threshold é efetuada a troca de cores imagem.threshold(imagemContainer, retangulo, ponto, "<", 8000000, 0x006600, 0xFF0000, false); imagem.threshold(imagemContainer, retangulo, ponto, ">", 8000000, 0xFF3333, 0xFF0000, false); imagem.threshold(imagemContainer, retangulo, ponto, ">", 10000000, 0xFFFF66, 0xFF0000, false); imagem.threshold(imagemContainer, retangulo, ponto, ">", 12000000, 0x99FF66, 0xFF0000, false); imagem.threshold(imagemContainer, retangulo, ponto, ">", 15000000, 0xFFFFFF, 0xFF0000, false); }; //movieClip para armazenar as imagens modificadas this.createEmptyMovieClip('mcCamModificado', this.getNextHighestDepth()); mcCamModificado._x = 20; mcCamModificado._y = mcCam._y + mcCam._height + 20; //primeira imagem modificada mcCamModificado.createEmptyMovieClip('cam1', mcCamModificado.getNextHighestDepth()); mcCamModificado.cam1.attachBitmap(imagem, mcCamModificado.getNextHighestDepth()); //anexa a imagem //segunda imagem modificada mcCamModificado.createEmptyMovieClip('cam2', mcCamModificado.getNextHighestDepth()); mcCamModificado.cam2.attachBitmap(imagem, mcCamModificado.getNextHighestDepth()); //anexa a imagem mcCamModificado.cam2._xscale = -100; //inverte a imagem mcCamModificado.cam2._x = mcCamModificado.cam1._x +mcCamModificado.cam1._width + mcCamModificado.cam1._width - 1; //a função setInterval executa a atualização das imagens setInterval(atualizarImagem, 50);

August 30th, 2007 at 16:01
Erick, qual versão do flash vc usou?
Abraço
November 25th, 2007 at 6:26
Tiago, Flash 8.
January 23rd, 2008 at 15:25
Olá!!
muito legal seu blog, sempre visito e aprendo bastante.
ai, estava olhando este experimento com a web cam e nao consegui
ver funcionando. acessei de um notebook com webcam embutida.
me pediu para aceitar o acesso a web cam e microfone, a ceitei e
a tela ficou verde… sabe se estou fazerndo algo errado?
gostaria de aprender a fazer um assim… obrigado!!
Sam
June 16th, 2008 at 15:48
muito legal seu trabalho tentei fazer aqui mais não roda no servidor, tipo se outra pessoa acessar´não aparece a imagem , apenas no comp. local. vc tem alguma ideia?
obrigado
Luciano
yy200@ig.com.br