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;
總結
兩種方式都用過了,覺得第一種好點,因為第一種可以判斷是否加載成功,這樣可以做后續操作