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 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: PictureBox2.Image = new bitmap(Alto, Ancho)
Después modificas tu PictureBox2.CreateGraphics.DrawImage(A, B, c, GraphicsUnit.Pixel)
Por: 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) 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
|