【问题标题】:WPF download image bytes from Blob StorageWPF 从 Blob 存储下载图像字节
【发布时间】:2011-06-08 06:56:09
【问题描述】:

我想在我的应用启动时预加载很多图片,有点像一次性的事情。

我有一个 Image 类,其中包含作为 blob 存储存储在云中的图像的 Url(此地址是 https 地址顺便说一句)

我想从云端下载图像字节,将它们存储在对象上,然后在显示图像时,从其字节中加载图像。

我有这方面的所有代码,但我不断收到异常:

找不到适合完成此操作的成像组件。

这是我的代码:EDIT UPDATED WITH A FIX

    //Loaded on start-up
    private static void LoadImageBytes(Image img)
    {
        var urlUri = new Uri(img.Url);
        var request = (HttpWebRequest)WebRequest.CreateDefault(urlUri);
        MemoryStream memStream = new MemoryStream();

        using (var response = request.GetResponse())
        {
            var buffer = new byte[4096];
            using (var stream = response.GetResponseStream())
            {
                int bytesRead = stream.Read(buffer, 0, buffer.Length);
                while (bytesRead > 0)
                {
                    memStream.Write(buffer, 0, bytesRead);
                    bytesRead = stream.Read(buffer, 0, buffer.Length);
                }

                img.ImageBytes = memStream.ToArray();
            }
        }
    }

然后,当我想在屏幕上显示图像时,我称之为:

    public BitmapImage ImageFromBuffer(Byte[] bytes)
    {
        MemoryStream stream = new MemoryStream(bytes);
        stream.Seek(0, SeekOrigin.Begin);
        BitmapImage image = new BitmapImage();
        image.BeginInit();
        image.StreamSource = stream;
        image.EndInit();
        return image;
    }

但在 EndInit() 调用中我得到了异常。

我已经做了一些测试,如果我从本地文件系统加载文件,我会得到与云中图像不同的字节集。我认为它与 blob 存储或 https 有关?

是的,我可以浏览到该图像并且它没有损坏。

编辑,现在已经修复好了

【问题讨论】:

    标签: c# wpf azure azure-blob-storage


    【解决方案1】:

    你确定这条线是正确的吗?

     while (stream.Read(buffer, 0, buffer.Length) > 0)
                    img.ImageBytes = buffer;
    

    img.ImageBytes 将保存最后读取的缓冲区。

    【讨论】:

      猜你喜欢
      • 2018-11-21
      • 2018-08-03
      • 1970-01-01
      • 2021-07-25
      • 2019-12-19
      • 2019-09-05
      • 2017-11-08
      • 2019-04-06
      • 1970-01-01
      相关资源
      最近更新 更多