2009-10-02 11 views
5

Estoy tratando de mostrar una imagen en una "toolStrip" i C# desde un weburl. Estoy usando el siguiente méthode para obtener la imagenCarga de imágenes en C# desde una URL web

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()); 
      } 
    } 

su defecto cuando Myimg5 = Image.FromStream(responsePic5.GetResponseStream()); se produce una excepción, pero la imagen es todavía allí en la url

Pero por desgracia la mayoría de las veces no es cargando correctamente y, a veces lanzando una Error 404

+0

¿Cómo son los contenidos en bruto de la secuencia? Están decorados en HTML o algo así? –

+0

Gracias Jacob, los datos que necesito para transmitir es un archivo de imagen png. – raki

+0

Estaba pensando que podría generar la secuencia de la ventana de depuración y ver si había etiquetas alrededor de sus bytes de imágenes. Pero, simplemente lo probé y todo funcionó bien para mí. ¿Estás seguro de que la imagen está disponible para ti a través de una webrequest? ¿Puedes probar esta imagen? http://sstatic.net/so/img/logo.png (el logotipo de stackoverflow) y ver si funcionan las cosas? –

Respuesta

6

La secuencia de respuesta tiene otras cosas que no necesariamente desea. Lo que realmente quieres los datos en bruto del archivo imgage, por lo que puede utilizar:

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

0

Probablemente el sitio web está protegido contra la vinculación caliente. Dado que las imágenes son de gran tamaño en comparación con las páginas html y los sitios web pagan por el ancho de banda utilizado, este es un mecanismo para proteger los sitios web contra el robo de bsndwidth, por otros sitios web.

La idea es utilizar algún tipo de autenticación y asegurarse de que un usuario real está pidiendo la imagen. Esto generalmente lo hacen las cookies en la página que contiene la imagen. Debe obtener esas cookies y enviarlas con su solicitud. Debe agregar un CookieContainer a su solicitud, luego solicite la página donde reside la imagen y, al final, recupere la imagen (use la misma solicitud para todos los pasos, las cookies se agregarían y utilizarían automáticamente).

Cuestiones relacionadas