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;
总结
两种方式都用过了,觉得第一种好点,因为第一种可以判断是否加载成功,这样可以做后续操作