none
image.Save Error RRS feed

  • Pregunta

  • Tengo esto

    Public Sub GuardaImagen()

    RutaImagen = My.Computer.FileSystem.CurrentDirectory & "\Paisajes.jpg" MiImagen.Save(RutaImagen, System.Drawing.Imaging.ImageFormat.Jpeg)

    End Sub

    que genera el siguiente error.

    Excepción producida: 'System.Runtime.InteropServices.ExternalException' en System.Drawing.dll
    Excepción no controlada del tipo 'System.Runtime.InteropServices.ExternalException' en System.Drawing.dll
    Error genérico en GDI+.

    Y sucede eso únicamente cuando ya esta creado el archivo de imagen.

    El programa lo que hace es.

    Cargar la imagen a una variable tipo Image y a un picturebox con el siguiente codigo

       

    'Este metodo lo uso para cargar la imagen que quiera el usuario mediante un evento click de un boton y'

    'Tambien se uso el metodo para cargar la imagen cuando se llama al evento Form_load'

    Public Sub ImagenDesdeRuta(RutaImagen As String)

    RutaImagen = My.Computer.FileSystem.CurrentDirectory & "\Paisajes.jpg"

    If System.IO.File.Exists(RutaImagen) Then Dim stream As New System.IO.StreamReader(RutaImagen) MiImagen = Image.FromStream(stream.BaseStream) With PictureBox1 .Image = System.Drawing.Image.FromStream(stream.BaseStream) If .Image.Width < .Width And .Image.Height < .Height Then .SizeMode = PictureBoxSizeMode.CenterImage ElseIf .Image.Width.ToString > .Width Or .Image.Height.ToString > .Height Then .SizeMode = PictureBoxSizeMode.StretchImage End If End With stream.Dispose() stream.Close() stream = Nothing End If

    End Sub

    Cargar la info desde un txt

    El usuario realiza mas acciones 

    Y luego si el usuario decide que esa imagen quiere cambiar lo que hace es seleccionar otra imagen con un openfiledialog, el metodo ImagenDesdeRuta(RutaImagen As String) y GuardaImagen()

    MiImagen y RutaImagen Son globales.

    y mediante el *.txt y el *.jpg el programa recuerda lo que el usuario guardo para una siguiente sesión.
    Gracias por su ayuda.

    martes, 20 de febrero de 2018 23:06

Todas las respuestas

  • Necesito ayuda con el tema de liberar recursos

    Mi aplicación verifica si hay una imagen en una ruta (Escritorio). Si hay imagen la muestra.

    Ahora ya que hay una imagen en la ruta (Escritorio) y el usuario quiere cambiar dicha imagen escoje una a través de un Openfiledialog y se guarda en la misma ruta (Escritorio).

    Hay viene el problema que genera el error Genérico en GDI+

    Hasta ahora se que si se abre una imagen queda bloqueada y no encuentro manera para que se desbloquee.

    El código es el siguiente

    Private Sub BT_Puebas_Click(sender As Object, e As EventArgs) Handles BT_Puebas.Click If OpenFileDialog1.ShowDialog = DialogResult.OK Then Numero1() 'Entre estas dos partes he intentado eliminar renombrar mover copiar' Numero2() End If End Sub Dim imagenDatos As Byte() Private Sub Numero1() Dim i As Image = Image.FromFile(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Temp.jpg") Dim m As System.IO.MemoryStream = New System.IO.MemoryStream() i.Save(m, System.Drawing.Imaging.ImageFormat.Bmp) imagenDatos = m.ToArray() m.Close() End Sub Private Sub Numero2() Dim IM As Image Dim MS As System.IO.MemoryStream = New System.IO.MemoryStream(imagenDatos) IM = Image.FromStream(MS) IM.Save(My.Computer.FileSystem.SpecialDirectories.Desktop & "\Temp.jpg", System.Drawing.Imaging.ImageFormat.Jpeg) 'Error en la linea anterior'

    MS.Close() End Sub

    Lo que yo quiero es lograr que después de cargar la imagen en la variable, este archivo quede suelto y se pueda ejecutar cualquier otra acción.
    Gracias de antemano.


    • Editado StringCGE jueves, 22 de febrero de 2018 2:27 Olvide marcar en donde se genera el error
    • Combinado Enrique M. Montejo miércoles, 28 de febrero de 2018 16:10 Preguntas relacionadas
    jueves, 22 de febrero de 2018 2:26