我正在使用以下代码尝试将我的 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 被释放,导致异常“无法访问已释放的文件”。
我的电话:
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;
}
关于c# - BitmapImage:访问关闭的 StreamSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845019/