[Solucionado] Problema con guardado de un Picturebox (C#)

Iniciado por Xephiro, 20 Marzo 2011, 05:09 AM

0 Miembros y 1 Visitante están viendo este tema.

Xephiro

hola, estoy trabajando en un programa para mi PC. Entre una de las cosas que haces en en un momento dado saca una foto con la Web Cam y queda en un picturebox que esta oculto, mi problema esta al momento en que trato de guardar ese picturebox como una imagen en mi PC.

De manera general aqui dejo el codigo con mi problema.

private bool saveImage(String path, ImageFormat iformat)
       {
           try
           {
               capturaOculta.Image.Save(path, iformat);
           }
           catch (Exception ex)
           {
               MessageBox.Show(this, ex.ToString());
               return false;
           }

           return true;
       }


con ese codigo al momento de tratar de guardar la imagen me da el error de que estoy tratando de hacer una referencia a un objeto no existente.


Pero si agrego la siguiente linea al codigo no me da errores.


private bool saveImage(String path, ImageFormat iformat)
       {
           try
           {
               MessageBox.Show("...?"); //------> NUEVA LINEA
               capturaOculta.Image.Save(path, iformat);
           }
           catch (Exception ex)
           {
               MessageBox.Show(this, ex.ToString());
               return false;
           }

           return true;
       }


El problema es que no quiero que se muestre un mensaje antes, durantes o despues del sacado y guardado de la foto, solo si es un error.

Alguien sabe que puede estar pasando??

Es raro que agregando un MessageBox nada mas el error ya no aparezca y me resulte todo bien. :S:S


Edu

Mmm faltaria el codigo donde llamas a la funcion saveImage, deja mas cosas

Xephiro

Cita de: XXX-ZERO-XXX en 20 Marzo 2011, 05:42 AM
Mmm faltaria el codigo donde llamas a la funcion saveImage, deja mas cosas

No creo que sea de mucha ayuda, pero lo dejo de todas maneras


private void loginBtn_Click(object sender, EventArgs e)
        {
            if (tb_usuario.Text == "usuario" && tb_password.Text == "password")
            {
                //.............
            }
            else
            {
                takeSnapshot();
                saveImage(directorio, ImageFormat.Jpeg);
            }
        }

Edu

Jajaja q buena idea me diste! muy bien pensado eso q haces xD

Bueno yo pensaba q talvez estabas haciendo muchas llamadas a la funcion, de una forma recursiva y eso da error a veces, por eso lo del messagebox, es porq al salir el messagebox espera un tiempo y da tiempo para respirar xD
Eso lo digo porq me ha pasado tamb pero talvez no es por lo q te he dicho.

Y el codigo de takeSnapshot() cual es?

Xephiro

Cita de: XXX-ZERO-XXX en 20 Marzo 2011, 05:56 AM
Jajaja q buena idea me diste! muy bien pensado eso q haces xD

Bueno yo pensaba q talvez estabas haciendo muchas llamadas a la funcion, de una forma recursiva y eso da error a veces, por eso lo del messagebox, es porq al salir el messagebox espera un tiempo y da tiempo para respirar xD
Eso lo digo porq me ha pasado tamb pero talvez no es por lo q te he dicho.

Y el codigo de takeSnapshot() cual es?

¬¬ mmm, takeSnapshot() no creo que sea el problema asi que no lo pondre.

Xephiro

Bueno, ya arregle el problema..

Estaba eliminando el contenido de mi picturebox antes de que terminara de guardarse la imagen.

Edu

Entonces el error estaba en TakeSnapshot() ? por eso te decia q pongas mas codigo

Xephiro

Cita de: XXX-ZERO-XXX en 20 Marzo 2011, 18:12 PM
Entonces el error estaba en TakeSnapshot() ? por eso te decia q pongas mas codigo

El error estaba en la parte de guardado, tarda un poco en guardar la imagen y en ese tanto otro método anulaba su imagen.

la solucion estaba modificando un poco en el codigo que puse al principio y el método saveImage para que me avisara cuando el guardado se completara

Edu

Cita de: XXX-ZERO-XXX en 20 Marzo 2011, 05:56 AM
Bueno yo pensaba q talvez estabas haciendo muchas llamadas a la funcion, de una forma recursiva y eso da error a veces, por eso lo del messagebox, es porq al salir el messagebox espera un tiempo y da tiempo para respirar xD

Ok, nos vemos