views:

185

answers:

1

Hi there,

I have written enough code to preview the webcam video in Flash.

Now, I want to capture images at 10 second intervals.

Here's my code:

import flash.display.BitmapData
import flash.geom.Matrix
import com.adobe.images.JPGEncoder;
import flash.net.FileReference;

//get the default camera
//change your Default camera using the Flash Player Settings.
cam=Camera.get()
//this event is called whenever permission to access the local camera, is accepted or denied by the user
cam.onStatus=function(e)
{
    //if we are given permission
    if(e.code == "Camera.Unmuted")
    {
        //start the application
        initialize()
    }
    else
    {
        System.showSettings(3)
    }
}

var snapshot:BitmapData=new BitmapData(cam._width,cam._height);

function takeSnapshot()
{
    snapshot.draw(cam,new Matrix());
}


//if there are no Cameras
if(cam == null)
{
    System.showSettings(3)
}
else
{
    cam.setMode(1024, 768, 30);
    cam.setQuality(10000,0);
    output.attachVideo(cam);
    setInterval(this,"takeSnapshot",1000);
}

Any help please?

I am a total Flash newbie.

Thanks, Rishi.

+1  A: 

If you want to save it to the user's disk keep in mind that you can't do it automatically as, for security reasons, the save() method of the FileReference class can only be used after specific user actions (click, mousedown and I guess key-presses). After you have your bitmapdata you'll need the jpeg encoder from http://code.google.com/p/as3corelib/ to encode your img and save it to the disk. Something like this:

    var fileBrowser:FileReference = new FileReference();

    var bd:BitmapData = new BitmapData(imageContainer.width, imageContainer.height, false, 0xFFFFFF);

    bd.draw(imageContainer);

    var encoder:JPGEncoder = new JPGEncoder(35);

    var bytes:ByteArray = encoder.encode(bd);

    fileBrowser.save(bytes);

Take a look at the FileReference doc here http://help.adobe.com/en_US/AS3LCR/Flash_10.0/flash/net/FileReference.html so you see what else you can do with it.

JoseMarmolejos