BitmapImage:访问关闭的StreamSource

本文关键字:StreamSource 访问 BitmapImage | 更新日期: 2023-09-27 18:28:45

我正在使用以下代码尝试将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;
        }

遗憾的是,这不起img的作用。当我尝试在if语句中访问StreamSource时,它被释放,导致异常"无法访问已释放的文件"。

我的电话:BufferFromImage(imgLogo.Source as BitmapImage);

我该如何避免这种情况?

BitmapImage:访问关闭的StreamSource

我终于让它工作起来了:

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