Foros del Web » Programación para mayores de 30 ;) » .NET »

Manejo de imagenes en VB .NET

Estas en el tema de Manejo de imagenes en VB .NET en el foro de .NET en Foros del Web. Tengo un formulario en el que visualizo una imagen ya sea descargada de internet o cargada desde un archivo esto es según la opción que ...
  #1 (permalink)  
Antiguo 11/07/2012, 21:11
Avatar de omar190  
Fecha de Ingreso: septiembre-2008
Mensajes: 191
Antigüedad: 15 años, 7 meses
Puntos: 4
Manejo de imagenes en VB .NET

Tengo un formulario en el que visualizo una imagen ya sea descargada de internet o cargada desde un archivo esto es según la opción que sea, buen el detalle me surge al momento de guardar la imagene que es cargada localmente, es decir si cargo una imagen en el picturebox y después cambio esa imagen por otra y al guardar deve guardarse con el mismo nombre me salta un error es como que la imagen cargada previamente quedara en uso, este es el código que uso para cargar y guardar la imagen en local

mostrar imagen

Dim imagen as Image

imagen = Image.FromFile("Rutal del archivo")
me.picture.image = imagen
imagen.disponse()

Guardar imagen

me.picture.image.save("ruta y nombre")

en esta parte me muestra un error que dice error genérico gdi+, esto no pasa si manualmente elimino la imagen pues si la quiero eliminar por código me dice que esta en uso.

Alguna solucion para el manejo de las imagenes para que no ocurran estos detalles se los agradeceria.
  #2 (permalink)  
Antiguo 12/07/2012, 08:05
Avatar de Dradi7  
Fecha de Ingreso: junio-2008
Ubicación: Peru - Lima
Mensajes: 1.518
Antigüedad: 15 años, 10 meses
Puntos: 220
Respuesta: Manejo de imagenes en VB .NET

para esto deberias usar MemoryStream, ya que como la imagen esta usada al momento de hacer picture.imagen = imagen no puedes modificarla, eliminarla, etc.

Ejemplo

Código C#:
Ver original
  1. public void getFoto(PictureBox pbFoto)
  2. {
  3.     OpenFileDialog OpenFile = new OpenFileDialog();
  4.     IO.Stream Mem = null;
  5.     string name = "";
  6.    
  7.     try
  8.     {
  9.         OpenFile.InitialDirectory = "C:\\Images\\";
  10.         OpenFile.Filter = "Imágenes JPG (*.jpg)|*.jpg| " +
  11.                     "Imagenes Fireworks (*.png)|*.png|" +
  12.                     "Mapas de bits (*.bmp)|*.bmp|" +
  13.                     "Todos Los Archivos|*.*";
  14.         OpenFile.FilterIndex = 1;
  15.         if(OpenFile.ShowDialog() == DialogResult.OK){
  16.             if(System.IO.File.Exists(OpenFile.FileName)){
  17.                 Mem = OpenFile.OpenFile();
  18.                 pbFoto.Imagen = null;
  19.                 pbFoto.Image = Image.FromStream(Mem, True, True);
  20.                 pbFoto.SizeMode = PictureBoxSizeMode.StretchImage;
  21.                 pbFoto.Refresh();
  22.             }
  23.         }
  24.     }catch(Exception e)
  25.     {
  26.         OpenFile.Dispose();
  27.         if(Mem!=null)Mem.Close();
  28.     }
  29. }
__________________
La clave de todo triunfador es eliminar todas sus excusas y sus limitaciones
  #3 (permalink)  
Antiguo 12/07/2012, 19:56
Avatar de omar190  
Fecha de Ingreso: septiembre-2008
Mensajes: 191
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Manejo de imagenes en VB .NET

Cita:
Iniciado por Dradi7 Ver Mensaje
para esto deberias usar MemoryStream, ya que como la imagen esta usada al momento de hacer picture.imagen = imagen no puedes modificarla, eliminarla, etc.

Ejemplo

Código C#:
Ver original
  1. public void getFoto(PictureBox pbFoto)
  2. {
  3.     OpenFileDialog OpenFile = new OpenFileDialog();
  4.     IO.Stream Mem = null;
  5.     string name = "";
  6.    
  7.     try
  8.     {
  9.         OpenFile.InitialDirectory = "C:\\Images\\";
  10.         OpenFile.Filter = "Imágenes JPG (*.jpg)|*.jpg| " +
  11.                     "Imagenes Fireworks (*.png)|*.png|" +
  12.                     "Mapas de bits (*.bmp)|*.bmp|" +
  13.                     "Todos Los Archivos|*.*";
  14.         OpenFile.FilterIndex = 1;
  15.         if(OpenFile.ShowDialog() == DialogResult.OK){
  16.             if(System.IO.File.Exists(OpenFile.FileName)){
  17.                 Mem = OpenFile.OpenFile();
  18.                 pbFoto.Imagen = null;
  19.                 pbFoto.Image = Image.FromStream(Mem, True, True);
  20.                 pbFoto.SizeMode = PictureBoxSizeMode.StretchImage;
  21.                 pbFoto.Refresh();
  22.             }
  23.         }
  24.     }catch(Exception e)
  25.     {
  26.         OpenFile.Dispose();
  27.         if(Mem!=null)Mem.Close();
  28.     }
  29. }
Gracias Dradi7 por la respuesta y el ejemplo veo que este código es pa c, ya lo eh cambiado a vb y adaptado a lo que necesitaba y todo funciona bien.

Etiquetas: imagenes, manejo, net, vb, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:56.