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; }