1

したがって、次のコードを使用して AS3 アプリでウェブカメラを表示できました。

package{
    import flash.display.Sprite;
    import flash.media.Camera;
    import flash.media.Video;

    public class WebCam extends Sprite
    {   
        private var camara:Camera;
        private var video:Video;

        public function WebCam():void {
            setupCamera();
        }

        private function setupCamera():void
        {
            video = new Video(640, 480);
            camara = Camera.getCamera();
            camara.setMode(640, 480, 30);
            video.attachCamera(camara);
            addChild(video);
        }

    }

}

しかし、ウェブカメラから現在の画像の写真を撮り、ローカルのどこかに保存する方法があるかどうか疑問に思っていますか?

編集:

@ショーンこれが私の現在のコードです:

var camara;
var video;


//Get the camera reference.
camara = Camera.getCamera();


//Create a video instance
video = new Video(640, 480);


video.attachCamera(camara);

addChild(video);

var bitmapData:BitmapData = new BitmapData(640, 480);
bitmapData.draw(video);

var encoder:JPGEncoder = new JPGEncoder();
var byteArray:ByteArray = encoder.encode(bitmapData);

navnavClick.addEventListener(MouseEvent.CLICK,function(){
var fileReference:FileReference = new FileReference();
fileReference.save(byteArray);
});

それはすべてうまくいきますが、出力画像は空白の (白い) 画像です。JPGEncoder クラスも含めました。何か案は?

4

2 に答える 2

1

最初に、イメージを に描画する必要がありますBitmapData

var bitmapData:BitmapData = new BitmapData(640, 480);
bitmapData.draw(video);

次に、をエンコードする必要がありますBitmapData。Alchemy を使用するエンコーダーをお勧めしますが、Adobe は Flash Player からそれを削除しています。したがって、より遅いas3corelib JPGEncoderを使用する必要があります。

var encoder:JPGEncoder = new JPGEncoder();
var byteArray:ByteArray = encoder.encode(bitmapData);

これで、イメージ ファイルの raw バイトが得られ、それらをディスクに書き込むことができます。

var fileReference:FileReference = new FileReference();
fileReference.save(byteArray);

(この部分は、クリックなどのユーザーが開始したアクションから呼び出す必要があります)。

于 2012-06-05T19:33:37.440 に答える