2009-10-02 59 views
5

我試圖從weburl中的「toolStrip」i c#中顯示圖像。現在用以下梅索德以獲取圖像圖像從網址加載到c#

WebRequest requestPic5 = WebRequest.Create(icon_path); 
         requestPic5.Timeout = 5000; 
         WebResponse responsePic5 = null; 
         Image Myimg5 = null; 

if (requestPic5 != null) 
    { 
     responsePic5 = requestPic5.GetResponse(); 
     if (responsePic5 != null) 
     { 
      Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); 
      } 
    } 

Myimg5 = Image.FromStream(responsePic5.GetResponseStream());拋出一個異常,但圖像依然存在於URL

但遺憾的是大部分時間它不是正確加載,有時扔了它的失敗404錯誤

+0

流的原始內容是什麼樣的?他們是用HTML還是其他東西裝飾的? –

+0

謝謝雅各布, 我需要流的數據是一個PNG圖像文件。 – raki

+0

我在想你可以輸出流到調試窗口,看看你的圖像字節周圍是否有標籤。但是,我只是測試它,一切都爲我工作得很好。你確定這個圖片是通過網絡請求提供給你的嗎?你可以試試這張圖片嗎? http://sstatic.net/so/img/logo.png(stackoverflow標誌),看看是否有用? –

回答

6

響應流還有其他你不一定需要的東西。你真的只想imgage文件的原始數據,所以你可以使用:

new MemoryStream(new WebClient().DownloadData("http://address/file.ico"));

0

也許該網站是針對熱鏈接保護。由於與html頁面相比圖像的尺寸較大,並且網站支付其使用的帶寬,因此這是一種防止網站被其他網站盜取信息的機制。

這個想法是使用某種認證,並確保一個真正的用戶要求的形象。這通常通過包含圖像的頁面上的Cookie完成。您需要獲取這些cookie並將它們與您的請求一起發送。您需要爲您的請求添加CookieContainer,然後請求該圖片駐留的頁面並在最後檢索圖片(對所有步驟使用相同的請求,Cookie將自動添加並使用)。