我在从 web 请求获得的 png 和 gif 字节创建一个时遇到了一些BitmapImage
麻烦MemoryStream
。字节似乎下载得很好,BitmapImage
对象的创建没有问题,但是图像实际上并没有在我的 UI 上呈现。仅当下载的图像为 png 或 gif 类型时才会出现此问题(适用于 jpeg)。
这是演示该问题的代码:
var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
Byte[] buffer = new Byte[webResponse.ContentLength];
stream.Read(buffer, 0, buffer.Length);
var byteStream = new System.IO.MemoryStream(buffer);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 30;
bi.StreamSource = byteStream;
bi.EndInit();
byteStream.Close();
stream.Close();
return bi;
}
为了测试 Web 请求是否正确获取字节,我尝试了以下操作,将字节保存到磁盘上的文件中,然后使用 aUriSource
而不是 a加载图像StreamSource
,它适用于所有图像类型:
var webResponse = webRequest.GetResponse();
var stream = webResponse.GetResponseStream();
if (stream.CanRead)
{
Byte[] buffer = new Byte[webResponse.ContentLength];
stream.Read(buffer, 0, buffer.Length);
string fName = "c:\\" + ((Uri)value).Segments.Last();
System.IO.File.WriteAllBytes(fName, buffer);
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelWidth = 30;
bi.UriSource = new Uri(fName);
bi.EndInit();
stream.Close();
return bi;
}
有没有人可以发光?