我有一些代码,我一直在使用它来从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 []数组?或者我可能正在考虑将它们转换为内存流,以便二进制阅读器可以使用它?
谢谢!
答案 0 :(得分:1)
要将BitmapSource转换为字节数组,您可以执行以下操作, 其中bmp是你的BitmapSource或RenderTargetBitmap。
BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
byte[] arr = null;
using (MemoryStream memStream = new MemoryStream())
{
encoder.Save(memStream);
arr = stream.ToArray();
}
答案 1 :(得分:0)