BitmapImage:访问已关闭的StreamSource

我正在使用以下代码尝试将我的BitmapImage转换为byte [],以便将其保存在MS SQL数据库中。

public static byte[] BufferFromImage(BitmapImage img) { if (img == null) return null; byte[] result = null; using (Stream stream = img.StreamSource) { if (stream != null && stream.Length > 0) { using (BinaryReader br = new BinaryReader(stream)) { result = br.ReadBytes((int)(stream.Length)); } } } return result; } 

遗憾的是,当我尝试在if语句中访问img.StreamSource时,这不起作用,导致exception“无法访问已处理的文件”。

我的调用: BufferFromImage(imgLogo.Source as BitmapImage);

我怎么能避免这个?

我终于设法让它工作:

  public static byte[] BufferFromImage(BitmapImage img) { byte[] result = null; if (img != null) { using(MemoryStream memStream = new MemoryStream()) { JpegBitmapEncoder encoder = new JpegBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(img)); encoder.Save(memStream); result = memStream.ToArray(); } } return result; }