2013-09-26 16 views
0

我想通過HttpWebRequest獲取圖像並以贏球形式imagebox顯示。雖然通過跟蹤提琴手ImageView的標籤,我可以看到圖像的請求可以被正確地觀察,但在讀取數據流在我將動態生成的圖像變爲贏球形式

Image img = Image.FromStream(stream). 

得到Stream was not readable錯誤我缺少什麼?

HttpWebRequest req = HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[URL here]"); 
HttpWebResponse response = (HttpWebResponse)req.GetResponse();  
Stream stream = response.GetResponseStream(); 

Image img = Image.FromStream(stream); // ERROR occurs here 

stream.Close(); 
+1

它還挺很難說,因爲這個問題沒有顯示什麼是生成的圖像格式。流可能沒有完全下載,你可以比較'response.ContentLength'和'stream.Length'嗎? 'Image.FromStream'預計圖像完全在流內。也許你應該先嚐試將它複製到內存流中,直到下載完整的ContentLength。 –

+0

我正在尋找一個req.ContentLegth = -1和流長度='stream.Length'拋出了一個異常的類型'System.NotSupportedException'所以不知道什麼是錯誤的,因爲在Fiddler我得到的圖像顯示。另外,如果我添加responseData = myStreamReader.ReadToEnd();它似乎得到正確的字符串 – Jim

回答

0

經過一番挖掘找到答案在這裏C# gif Image to MemoryStream and back (lose animation)

HttpWebRequest req = HttpWebRequest request = (HttpWebRequest)WebRequest.Create("[URL here]"); 
HttpWebResponse response = (HttpWebResponse)req.GetResponse();  
Stream stream = response.GetResponseStream(); 

MemoryStream memoryStream = new MemoryStream(); 
stream.CopyTo(memoryStream); 
memoryStream.Position = 0; 
stream = memoryStream; 
Image img = Image.FromStream(stream); 

stream.Close();