none
Guardar Imagen de un Picturebox en la carpeta debug de mi proyecto RRS feed

  • Pregunta

  • Buen día.

    intento guardar una imagen de un picturebox en una carpeta especifica dentro de mi proyecto pero no quiero que se habrá ninguna dialogo quiero que sea directo al presionar un botón que la guarde sin preguntar nada..

    Estoy usando esta linea de código la cual me funciona si guardo la imagen seleccionando una carpeta de mi disco D:

    pero al intentar guardarla en una carpeta creada en el debug de mi proyecto me sale "ERROR GENÉRICO EN GDI+."

    esta es mi linea de código.

        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            Try
                pic_img_estudiante.Image.Save(Application.StartupPath & "\Debug\img\nueva.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub

    mi proyecto lo estoy desarrollando en vb.net 2010

    Gracias por la ayuda que me puedan Brindar

    viernes, 19 de junio de 2015 14:59

Respuestas

  • "Frank Molina" escribió:

    > Estoy usando esta linea de código la cual me funciona si guardo
    > la imagen seleccionando una carpeta de mi disco D:
    >
    > pero al intentar guardarla en una carpeta creada en el debug de mi
    > proyecto me sale "ERROR GENÉRICO EN GDI+."

    Hola:

    El mensaje de "Error genérico en GDI+" se debe a que seguramente NO EXISTE una carpeta llamada "img" en la ruta indicada (Application.StartupPath & "\Debug\"), ya que el método Save no crea la carpeta si ésta no existe, por lo que tendrás que crearla antes de intentar guardar la imagen en disco:

    Imports System.IO
    
        Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    
            Dim folder As String = Path.Combine(Application.StartupPath, "img")
    
            ' Si no existe la carpeta, la creamos
            If (Not Directory.Exists(folder)) Then
                Directory.CreateDirectory(folder)
            End If
    
            Try
                ' Nombre del archivo.
                Dim fileName As String = Path.Combine(folder, "Nueva.jpg")
    
                ' Guardamos en disco la imagen existente en el control PictureBox,
                ' sobrescribiendo sin previo aviso cualquier otro archivo existente
                ' con igual nombre.
                '
                pic_img_estudiante.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg)
    
            Catch ex As Exception
                ' Se ha producido un error.
                MessageBox.Show(ex.Message)
    
            End Try
    
        End Sub

    El ejemplo NO GUARDA la imagen en la carpeta "img" existente en la carpeta Debug o Release, porque entiendo que cuando tu ejecutes directamente el archivo *.exe de tu aplicación éstas carpetas no existirán, salvo que las crees explícitamente, claro está.

    La carpeta "img" se creará dentro de la carpeta que actualmente contenga el ejecutable de tu aplicación, es decir, aquella cuyo valor es devuelto por la propiedad compartida Application.StartupPath, que cuando tu estés ejecutando tu aplicación desde el propio IDE de Visual Studio será la carpeta Debug o Release (dependiendo de la configuración que estés utilizando), y cuando distribuyas tu aplicación será la carpeta donde el usuario haya decidido instalar el archivo ejecutable de la misma.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    domingo, 21 de junio de 2015 6:40
    Moderador
  • Es probable que no este correcta la ruta, verifica que si sea la ruta correcta, puedes por ejemplo revisar que carpeta te devuelve Application.StartupPath.

    Saludos.

    UPDATE: Prueba con:

     pic_img_estudiante.Image.Save(Application.StartupPath & "\img\nueva.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

    viernes, 19 de junio de 2015 15:10

Todas las respuestas

  • Es probable que no este correcta la ruta, verifica que si sea la ruta correcta, puedes por ejemplo revisar que carpeta te devuelve Application.StartupPath.

    Saludos.

    UPDATE: Prueba con:

     pic_img_estudiante.Image.Save(Application.StartupPath & "\img\nueva.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)

    viernes, 19 de junio de 2015 15:10
  • gracias hombre si era la ruta
    domingo, 21 de junio de 2015 2:26
  • "Frank Molina" escribió:

    > Estoy usando esta linea de código la cual me funciona si guardo
    > la imagen seleccionando una carpeta de mi disco D:
    >
    > pero al intentar guardarla en una carpeta creada en el debug de mi
    > proyecto me sale "ERROR GENÉRICO EN GDI+."

    Hola:

    El mensaje de "Error genérico en GDI+" se debe a que seguramente NO EXISTE una carpeta llamada "img" en la ruta indicada (Application.StartupPath & "\Debug\"), ya que el método Save no crea la carpeta si ésta no existe, por lo que tendrás que crearla antes de intentar guardar la imagen en disco:

    Imports System.IO
    
        Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    
            Dim folder As String = Path.Combine(Application.StartupPath, "img")
    
            ' Si no existe la carpeta, la creamos
            If (Not Directory.Exists(folder)) Then
                Directory.CreateDirectory(folder)
            End If
    
            Try
                ' Nombre del archivo.
                Dim fileName As String = Path.Combine(folder, "Nueva.jpg")
    
                ' Guardamos en disco la imagen existente en el control PictureBox,
                ' sobrescribiendo sin previo aviso cualquier otro archivo existente
                ' con igual nombre.
                '
                pic_img_estudiante.Image.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg)
    
            Catch ex As Exception
                ' Se ha producido un error.
                MessageBox.Show(ex.Message)
    
            End Try
    
        End Sub

    El ejemplo NO GUARDA la imagen en la carpeta "img" existente en la carpeta Debug o Release, porque entiendo que cuando tu ejecutes directamente el archivo *.exe de tu aplicación éstas carpetas no existirán, salvo que las crees explícitamente, claro está.

    La carpeta "img" se creará dentro de la carpeta que actualmente contenga el ejecutable de tu aplicación, es decir, aquella cuyo valor es devuelto por la propiedad compartida Application.StartupPath, que cuando tu estés ejecutando tu aplicación desde el propio IDE de Visual Studio será la carpeta Debug o Release (dependiendo de la configuración que estés utilizando), y cuando distribuyas tu aplicación será la carpeta donde el usuario haya decidido instalar el archivo ejecutable de la misma.

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.


    domingo, 21 de junio de 2015 6:40
    Moderador