Eliiminar un fichero de imagen cargada en un picturebox

09/08/2006 - 14:47 por Javier Lopez | Informe spam
Estoy haciendo una aplicación que carga un fichero en un form, permite que
el usuario lo modifique y después lo guarde.
Si lo guardo con un nombre disitinto no hay problema, pero si intento
guardarlo con el mismo nombre, no hay manera. dice que el fichero está
siendo utilizado por otro proceso y no deja sobreescribirlo ni eliminarlo.

¿Alguien sabe como liberar el fichero sin cerrar el form?

Esto es lo que yo he intentado, pero no funciona:

Dim G As Graphics, Bimp As Bitmap
'cargar el fichero
Bimp = New Bitmap("imagen.jpg")
PB.Image = Bimp
PB.Refresh()
G = Graphics.FromImage(Bimp)

'aquí viene el código para modificarlo
' .

' Guardar la imagen en un fichero temporal
PB.Image.Save("temp.jpg", ImageFormat.Jpeg)
' intenta liberar la imagen
G.Dispose()
PB.Dispose()
Bimp.Dispose()
PB.Invalidate()
G = Nothing
PB = Nothing
Bimp = Nothing

' borra el fichero original
Kill("imagen.jpg") ' ESTO ES LO QUE NO FUNCIONA

' si hubiera funcionado, renombraría el fichero temporal
File.Copy("temp.jpg", "imagen.jpg")
Kill("temp.jpg")

Esta última parte funciona si cierro el form, pero la idea es seguir para
cargar y mopdificar otras imagenes

He visto una duda parecida en otro foro, pero no había respuesta
Un saludo
Javier
 

Leer las respuestas

#1 Jose Luis
10/08/2006 - 14:05 | Informe spam
Hola, en esta direccion te explican el porque y como solucionarlo.

http://support.microsoft.com/defaul...;es;309482

Suerte.
"Javier Lopez" escribió en el mensaje
news:eouO%
Estoy haciendo una aplicación que carga un fichero en un form, permite que
el usuario lo modifique y después lo guarde.
Si lo guardo con un nombre disitinto no hay problema, pero si intento
guardarlo con el mismo nombre, no hay manera. dice que el fichero está
siendo utilizado por otro proceso y no deja sobreescribirlo ni eliminarlo.

¿Alguien sabe como liberar el fichero sin cerrar el form?

Esto es lo que yo he intentado, pero no funciona:

Dim G As Graphics, Bimp As Bitmap
'cargar el fichero
Bimp = New Bitmap("imagen.jpg")
PB.Image = Bimp
PB.Refresh()
G = Graphics.FromImage(Bimp)

'aquí viene el código para modificarlo
' .

' Guardar la imagen en un fichero temporal
PB.Image.Save("temp.jpg", ImageFormat.Jpeg)
' intenta liberar la imagen
G.Dispose()
PB.Dispose()
Bimp.Dispose()
PB.Invalidate()
G = Nothing
PB = Nothing
Bimp = Nothing

' borra el fichero original
Kill("imagen.jpg") ' ESTO ES LO QUE NO FUNCIONA

' si hubiera funcionado, renombraría el fichero temporal
File.Copy("temp.jpg", "imagen.jpg")
Kill("temp.jpg")

Esta última parte funciona si cierro el form, pero la idea es seguir para
cargar y mopdificar otras imagenes

He visto una duda parecida en otro foro, pero no había respuesta
Un saludo
Javier



Preguntas similares