Сохранить захваченное неподвижное изображение с веб-камеры во флэш-памяти

StackOverflow https://stackoverflow.com/questions/3248520

Вопрос

Я написал достаточно кода для предварительного просмотра видео-видео в Flash.

Теперь я хочу захватывать изображения со скоростью 10 вторых интервалов.

Вот мой код:

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);
}
.

Любая помощь, пожалуйста?

Я общая вспышка новичка.

Спасибо, Риши.

Это было полезно?

Решение

Если вы хотите сохранить его на диске пользователя, имейте в виду, что вы не можете сделать это автоматически так, как, по соображениям безопасности, метод сохранения () класса FileRewference можно использовать только после определенных действий пользователей (щелкните,Mousedown и я думаю, ключевые прессы).После того, как у вас есть битмапдата, вам понадобится кодер JPEG из http://code.google.com/P / AS3CORELIB / Чтобы кодировать свой IMG и сохранить его на диск.Что-то вроде этого:

    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);
.

Посмотрите на документ FileReference Doc здесь http://help.adobe.com/en_us/as3lcr/flash_10.0/flash/net/fileReference.html Итак, вы видите, что еще вы можете сделать с этим.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top