none
Problemas para reescribir una imagen ya cargada en PictureBox1 RRS feed

  • Pregunta

  • Saludos estimados, buenos días... el motivo de la presente es para solicituar su apoyo con el siguiente inconveniente.

    Tengo un formulario donde tengo fichas de empleados, veo datos y foto. Hay posibilidades que los usuarios actualicen sus datos entre ellos sus foto. Que pasa, al enviar la foto no hay problema la coloca en el servidor. sin embargo si ya existe una, da un error de lectura y no permite reemplazarla.

    Este es el código que estoy utilizando. Quien me pueda apoyar con este incidente me tiene con dolor de cabeza. no se como liberar al 100% el uso de esa imagen por el picturebox1 y dice que está siendo utilizada por otro programa.

    private sub cambiar()
    
     Try
     Dim mbp As Bitmap ' la imagen
     Dim foto as string
    
                OpenFileDialog1.Title = "Seleccione la foto del usuario"
                OpenFileDialog1.InitialDirectory = "c:\"
                OpenFileDialog1.Filter = "Imagenes (*.jpg,*.gif)|*.jpg;*.gif"
                OpenFileDialog1.FilterIndex = 2
                OpenFileDialog1.FileName = TextBox3.Text
                OpenFileDialog1.ShowDialog()
        
    
    
                If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
                    cambiodefoto = True
            foto = OpenFileDialog1.FileName
    
                mbp = New Bitmap(foto)
                PictureBox1.Image = mbp
                realizacambio()
                Else
                    cambiodefoto = false
    
                End If
    
    END TRY
    
    
    end sub
    
    
    private sub realizacambio()
    
            Try
    
    
    
                mbp.Dispose() ' borra imagen anterior
    
                Me.PictureBox1.Image = Nothing ' declara que no hay imagen
                PictureBox1.Refresh()
    
                Dim otraimgen As Bitmap
    
                otraimgen = New Bitmap(foto) ' carga la nueva foto
    
    
                PictureBox1.Image = otraimgen ' la muestra
    
                ' valida si existe una imagen con mismo nombre en la ruta
                If System.IO.File.Exists("\\cmdfsp01\Escritorio_de_Servicio\Datos\AppInventario\imagenes\empleados\" & TextBox3.Text & ".jpg") = True Then
    
                    'si es asi lo borra
                    System.IO.File.Delete("\\cmdfsp01\Escritorio_de_Servicio\Datos\AppInventario\imagenes\empleados\" & TextBox3.Text & ".jpg")
                    'guarda la imagen cargada en la ruta donde se elimino la anterior.
                    PictureBox1.Image.Save("\\cmdfsp01\Escritorio_de_Servicio\Datos\AppInventario\imagenes\empleados\" & TextBox3.Text & ".jpg", Drawing.Imaging.ImageFormat.Jpeg)
    
                End If
    
    END TRY
    
    end sub
    
    
    

    Gracias quedo atento.

    • Cambiado Enrique M. Montejo domingo, 11 de septiembre de 2016 4:05 Pregunta relacionada con controles de Windows Forms.
    miércoles, 7 de septiembre de 2016 14:36

Todas las respuestas

  • Al seleccionar la imagen la muestras y luego, al llamar a realizacambio() la quitas y la vuelves a poner antes de copiar la imagen???

    Si el fichero existe lo borras pero ten en cuenta que si es el que has vuelto a recargar en la imagen no te dejará.

    ¿Que pasa si el fichero no existe? ¿no lo copias en esa ruta?


    Saludos, Javier J

    miércoles, 7 de septiembre de 2016 17:23
  • Si existe... pero cuando lo quiere eliminar dice que está siendo usado por otra app. en este caso VB, esto lleva a no poder eliminarla y por ende no colocar la nueva imagen.

    martes, 13 de septiembre de 2016 20:29