Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: rchrd en 25 Abril 2014, 18:02 pm



Título: Guardar imagen modificada de un picturebox (resuelto)
Publicado por: rchrd en 25 Abril 2014, 18:02 pm
Hola, tengo un problema para guardar una imagen modificada que contiene un picturebox.

eh buscado muchos ejemplos pero todos están demasiado largos y son difíciles de entender y yo solo tengo un programa muy simple

tengo dos picturebox:

     el picturebox1 contendrá la imagen original

     el picturebox2 contendrá la imagen modificada(será la misma imagen del pincturebox1 pero con una parte cortada)

tengo dos botones:

     button1 carga la imagen original en el picturebox1, modifica la imagen(la corta) y muestra la imagen modificada en el picturebox2

     button2 guardará la imagen del picturebox2 en formato jpeg en una carpeta especifica.

El problema es que no puedo guardar el contenido del picturebox2
Código:
Public Class Form1
'botón de cargar imagen en el picturebox1, cortarla, y redibujarla en el picturebox2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As System.Drawing.Image
        Dim B As System.Drawing.Rectangle
        Dim c As System.Drawing.Rectangle

        'A= Source File ( una Imagen )

        'B= Posicion donde Se va a Pegar y con que ancho y largo

        'C= De Que Posicion se va a Copiar y con el ancho y largo

'cargo una imagen
        PictureBox1.ImageLocation = "C:\Users\RGONZALEZ\Desktop\pdfs\ordent.jpeg"
        PictureBox1.Load()
'asigno A con la imagen del picturebox1
        A = PictureBox1.Image

        B = New Rectangle(0, 0, PictureBox2.Width, PictureBox2.Height)

' copio rectángulo del picturebox1 pero cortado y lo asigno a c
        c = New Rectangle(0, 70, PictureBox1.Width, PictureBox1.Height)

'redibujo la imagen en el picturebox2 pero ya con la modificacion
        PictureBox2.CreateGraphics.DrawImage(A, B, c, GraphicsUnit.Pixel)
'hasta aquí todo bien

    End Sub
'botón de guardar la imagen del picturebox2
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'aquí es donde me sale error por que en picturebox2.image tiene el valor de nothing a pesar de que se esta mostrando la imagen
        PictureBox2.Image.Save("C:\Users\RGONZALEZ\Desktop\pdfs\ordent.jpeg", Drawing.Imaging.ImageFormat.Jpeg)
    End Sub
End Class
se que algo me falta pero no se que es porfavor ayuda
 :huh:


Título: Re: Guardar imagen modificada de un picturebox
Publicado por: El Benjo en 25 Abril 2014, 18:43 pm
Lo que pasa es que no estás dibujando sobre la imagen del picturebox sino sobre el picturebox mismo. Primero tienes que asignar un nuevo mapa de bits a la propiedad image del picturebox:

Código
  1. PictureBox2.Image = new bitmap(Alto, Ancho)

Después modificas tu

Código
  1. PictureBox2.CreateGraphics.DrawImage(A, B, c, GraphicsUnit.Pixel)

Por:

Código
  1. PictureBox2.Image.CreateGraphics.DrawImage(A, B, c, GraphicsUnit.Pixel)

Creo que con eso debería bastar. Saludos.


Título: Re: Guardar imagen modificada de un picturebox
Publicado por: rchrd en 25 Abril 2014, 19:47 pm
no me ah resuelto mi problema Benjo
pero en otra pagina lo pudieron solucionar usando el mismo picturebox dejo el código (no hagan mucho caso a los comentarios de este codigo)
Código:
Public Class Form1
    'botón de cargar imagen en el picturebox1, cortarla, y redibujarla en el picturebox2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim A As System.Drawing.Image
        Dim B As System.Drawing.Rectangle
        Dim c As System.Drawing.Rectangle

        'A= Source File ( una Imagen )

        'B= Posicion donde Se va a Pegar y con que ancho y largo

        'C= De Que Posicion se va a Copiar y con el ancho y largo

        'cargo una imagen
        PictureBox2.Image = New Bitmap( "C:\imagen.jpeg")

        'asigno A con la imagen del picturebox1
        A = PictureBox2.Image

        B = New Rectangle(0, 0, PictureBox2.Width, PictureBox2.Height)

        ' copio rectángulo del picturebox1 pero cortado y lo asigno a c
        c = New Rectangle(0, 70, PictureBox2.Width, PictureBox2.Height)

        'redibujo la imagen en el picturebox2 pero ya con la modificacion
        Dim D As Bitmap = New Bitmap(PictureBox2.Width, PictureBox2.Height - 70)
        Dim g As Graphics = Graphics.FromImage(D)

        g.DrawImage(A, B, c, GraphicsUnit.Pixel)
        g.Dispose()
        PictureBox2.Image.Dispose()
        PictureBox2.Image = D

        'hasta aquí todo bien

    End Sub
    'botón de guardar la imagen del picturebox2
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        'aquí es donde me sale error por que en picturebox2.image tiene el valor de nothing a pesar de que se esta mostrando la imagen
        PictureBox2.Image.Save( "C:\imagen.jpeg", Drawing.Imaging.ImageFormat.Jpeg)
    End Sub
End Class