1、利用数据流
1 Image img;
2 byte[] btyarray = GetImageFromResponse(imageUrl);
3
4 //字节数据转流
5 MemoryStream ms = new MemoryStream(btyarray);
6
7 //重点:设置Image控件的Source为流格式的图片数据
8 img.Source = BitmapFrame.Create(ms, BitmapCreateOptions.None, BitmapCacheOption.Default);
9
10
11 //从图片地址获取图片字节数据
12 public byte[] GetImageFromResponse(string url, string cookie = null)
13 {
14 try
15 {
16 System.Net.WebRequest request = System.Net.WebRequest.Create(url);
17 if (!string.IsNullOrWhiteSpace(cookie))
18 {
19 request.Headers[System.Net.HttpRequestHeader.Cookie] = cookie;
20 }
21
22 System.Net.WebResponse response = request.GetResponse();
23
24 using (Stream stream = response.GetResponseStream())
25 {
26 using (MemoryStream ms = new MemoryStream())
27 {
28 Byte[] buffer = new Byte[1024];
29 int current = 0;
30 do
31 {
32 ms.Write(buffer, 0, current);
33 } while ((current = stream.Read(buffer, 0, buffer.Length)) != 0);
34 return ms.ToArray();
35 }
36 }
37 }
38 catch (Exception ex)
39 {
40 Console.WriteLine(ex.Message);
41 //throw new Exception(ex.Message);
42 return null;
43 }
44 }
2、利用BitmapImage
1 BitmapImage bitImage = new BitmapImage();
2 bitImage.BeginInit();
3 bitImage.UriSource = new Uri(imageUrl, UriKind.Absolute);
4 bitImage.EndInit();
5 img.Source = bitImage;
总结
两种方式都用过了,觉得第一种好点,因为第一种可以判断是否加载成功,这样可以做后续操作