2009-10-02 12 views
5

weburlから "toolStrip" i c#でイメージを表示しようとしています。画像イメージWeb URLから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であり、まだ

である。しかし、残念ながらそのが適切にロードし、時々投げていない、ほとんどの時間ときには失敗を取得するには、次のMethodeのを使用しています404エラー

+0

ストリームの生の内容はどのように見えますか? HTMLや何かで装飾されていますか? –

+0

ありがとうJacob、 ストリームする必要があるデータは、pngイメージファイルです。 – raki

+0

私はあなたがデバッグウィンドウにストリームを出力し、あなたのイメージバイトの周りにタグがあるかどうかを知ることができると考えていました。しかし、私はそれをテストし、すべてがうまくいった。あなたは、画像がWebリクエストを介して利用可能であることを確信していますか?あなたはこのイメージを試すことができますか? http://sstatic.net/so/img/logo.png(stackoverflowロゴ)を参照して、動作するかどうかを確認します。 –

答えて

6

応答ストリームには、必ずしも必要ではないその他のものがあります。あなたが使用できるように、あなたは本当にただ、imgageファイルの生データが欲しい:

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

0

おそらくウェブサイトは、ホットリンクから保護されています。画像はHTMLページと比較してサイズが大きく、ウェブサイトは使用帯域幅を支払うため、これは他のウェブサイトによるbsndwidth盗難からウェブサイトを保護するためのメカニズムです。

アイデアは何らかの認証を使用しており、実際のユーザーがイメージを要求していることを確認しています。これは、通常、イメージを含むページのCookieによって行われます。あなたはそれらのクッキーを取得し、あなたの要求と一緒にそれらを送信する必要があります。 CookieContainerをリクエストに追加し、イメージが存在するページをリクエストし、最後にイメージを取得する必要があります(すべての手順で同じリクエストを使用すると、Cookieが自動的に追加されて使用されます)。

関連する問題