如何在C#中将Wpf BitmapSource转换为byte []

时间:2012-06-18 14:01:33

标签: c# wpf

  

可能重复:
  WPF Image to byte[]

Relative to this 我有一个通过从webcam捕获图像获得的BitmapSource图像。如何将其转换为C#中的byte []

2 个答案:

答案 0 :(得分:13)

我得到了解决方案

        JpegBitmapEncoder encoder = new JpegBitmapEncoder();
        //encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
        encoder.QualityLevel = 100;          
       // byte[] bit = new byte[0];
        using (MemoryStream stream = new MemoryStream())
        {               
            encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
            encoder.Save(stream);
            byte[] bit = stream.ToArray(); 
            stream.Close();               
        }

答案 1 :(得分:2)

您可以使用BitmapSource.CopyPixels方法将原始数据复制到字节数组中。 stride参数是每个图像行中的字节数。 100像素宽的RGBA图像将具有100 * 4 = 400字节的步幅。

检查此SO discussion以获取stride参数及其对不同图像类型的行为