Como cargar una imagen de Internet en un control Picture Box y no perecer en el intento
Existe un poco de confusión (en parte generada por la documentación MSDN) sobre la forma de cargar una imagen en el nuevo control .NET PictureBox (Compatible con NET Framework: 3.0, 2.0, 1.1, 1.0)
De hecho he encontrado código muy diverso sobre la forma de cargar una imagen, a modo de ejemplo te propongo los siguientes enlaces, pero solo para satisfacer tu curiosidad, la verdad es que se han quedado un poco obsoletos por pertenecer a VB6 o incluso, a versiones anteriores
Después de todo este despliegue, y después de trastear un poco, resulta que, la forma mas sencilla de cargar una imagen, es estableciendo la propiedad ImageLocation con la situación de la imagen, y después, cargar la imagen de forma sincrónica utilizando el método Load o de forma asincrónica mediante el método LoadAsync.
De esta forma, no importa donde este la imagen, puede estar en un fichero en disco, o bien en una dirección de Internet, el proceso funciona de la misma forma
A continuación te presento una función que hace ese trabajo para utilizarla solo hay que ‘cortar y pegar’
La función tiene un parámetro, a través del cual se proporciona la situación de la imagen, por ejemplo, una dirección de Internet, o una dirección del disco local.
Internamente se define un PictureBox, pasamos la cadena con la situación del fichero a la propiedad ImageLocation y después cargamos la imagen con el método Load.
La imagen cargada se devuelve en una clase image, porque esta es la clase que .Net Framework utiliza para contener y/o trabajar con imágenes, de hecho, el control PictureBox, tiene la propiedad Image que obtiene / establece el objeto Image que se va a mostrar
''' <summary> ''' Carga una imagen en una clase [image] leyéndola desde cualquier situación ''' </summary> ''' <remarks> ''' <para> - Lenguaje.: Visual Basic .NET (2007) ''' (Compatible con NET Framework: 3.0, 2.0)</para> ''' <para> - Autor.: joaquin@medina.name </para> ''' <para> - Creación de la función .: 30/10/2007 14:43:30 </para> ''' <para> - Código BirraWare de uso libre</para> '''</remarks> ''' <param name='situacionDeLaImagen'> ''' <para>Cadena que contiene la situación FISICA de la imagen</para> ''' <para>Puede ser un nombre local de un fichero</para> ''' <para>Ejemplo.: c:/fotos/logotipo.jpg</para> ''' <para>Puede ser una dirección URI </para> ''' <para>Ejemplo.: http://jms32.eresmas.net/graficos/logo_gj01.gif</para> ''' </param> ''' <returns>Una clase <c>image</c> con la imagen cargada </returns> ''' <exception cref='Exception'>Cuando se produce algún error</exception> Friend Shared Function ObtenerImagen( _ ByVal situacionDeLaImagen As String) _ As System.Drawing.Image '----------------------------------------------------- If String.IsNullOrEmpty(situacionDeLaImagen) = True Then 'Limitacion Compatible con NET Framework: 3.0, 2.0) Throw New ArgumentException( _ "La situación de la imagen es una cadena vacia o nula", _ "situacionDeLaImagen") End If '----------------------------------------------------- Dim pictureBox As System.Windows.Forms.PictureBox = Nothing Dim unaImagen As System.Drawing.Image = Nothing '----------------------------------------------------- Try pictureBox = New System.Windows.Forms.PictureBox '---------------------------------------------------- ' Si el nombre de la imagen lleva el texto ' [file:///] QUITARLO porque genera errores If situacionDeLaImagen.IndexOf("file:///", 0) = 0 Then situacionDeLaImagen = situacionDeLaImagen.Substring(8) End If '-------------------------------------------------------- ' Carga en el control [pictureBox ] la imagen ' puede ser un nombre local de un fichero ' Ejemplo.: c:/fotos/logotipo.jpg ' Puede ser una dirección URI ' Ejemplo.: http://jms32.eresmas.net/graficos/logo01.gif pictureBox.ImageLocation = situacionDeLaImagen ' carga la imagen de forma síncrona pictureBox.Load() ' mover la imagen a una clase image para devolverla unaImagen = pictureBox.Image ' se devuelve el valor despues del end try ' ------------------------------------------------- Catch ex As Exception Throw ex Finally If Not (pictureBox Is Nothing) Then pictureBox.Dispose() pictureBox = Nothing End If End Try Return unaImagen End Function
© 1.997- 2.008 - La Güeb de Joaquín | |||||
Joaquin Medina Serrano
|
|||||
|