1

WPFMediaKit の VideoCaptureElement から画像をキャプチャするために使用しているコードが少しあります。それはうまくいきます!

    bmp.Render(videoElement);
    BitmapEncoder encoder = new JpegBitmapEncoder();
    encoder.Frames.Add(BitmapFrame.Create(bmp));
    string now = DateTime.Now.Year + "" + DateTime.Now.Month + "" + DateTime.Now.Day + "" + DateTime.Now.Hour + "" + DateTime.Now.Minute + "" + DateTime.Now.Second;
    string filename = now + "pic.jpg";
    FileStream fstream = new FileStream(filename, FileMode.Open);
    encoder.Save(fstream);
    fstream.Close();

私が直面している問題は、ファイルを保存するのではなく、byte[] データを取得する必要があることです。現在、開いているファイルダイアログボックスとファイルストリームでこれを行っています:

            if (File.Exists(FileLocation))
            {
                //Retreave image from file and binary it to Object image
                using (FileStream stream = File.Open(FileLocation, FileMode.Open))
                {
                    BinaryReader br = new BinaryReader(stream);
                    byte[] data = br.ReadBytes(maxImageSize);
                    image = new Image(dlg.SafeFileName, data, fileSize);
                }
            }

私がやりたいのは、キャプチャを取得して、ファイルを保存するのではなく、byte[] 型として取得したいということです。RenderTargetBitmap または BitmapEncoder を byre[] 配列に変換する方法はありますか? または、バイナリリーダーが使用できるように、それらをメモリストリームに変換することを考えていますか?

ありがとう!

4

2 に答える 2

0

前述の bmp 形式でのストリームへの保存に加えてCopyPixels、BitmapSource を呼び出すこともできます。

これにより、ヘッダーのない元の形式の元のピクセルが得られます。

このmsdnリンクを参照してください

于 2013-06-28T16:57:29.043 に答える