gpt4 book ai didi

c# - WPF 从 Blob 存储下载图像字节

转载 作者:行者123 更新时间:2023-12-03 04:40:04 24 4
gpt4 key购买 nike

我想在我的应用程序启动时预加载大量图像,这有点一次性。

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

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

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

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

这是我的代码:编辑更新并修复

    //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 有关?

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

编辑,现已修复一切正常

最佳答案

你确定这行是正确的吗?

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

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

关于c# - WPF 从 Blob 存储下载图像字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4676816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com