none
Error 'El parámetro no es valido' al pasar de Bytes a Bitmap

    Pregunta

  •  

    Hola!!

     

    Estoy almacenado imagenes en mi base de datos y luego las recupero para mostrarlas en un control Image (ASP 2.0).

     

    Para almacenarlas primero las convierto el Bitmap a un objeto de tipo Stream y ese objeto Stream a byte[] para almacenar este último.

     

    Hasta ahi todo parecía correcto, pero al recuperar esa imagen de la base de datos y hacer la conversion al revés, en el último paso me aparece el error mencionado arriba. Probando he descubierto que el error esta o bien en la conversión de Stream a bytes antes de almacenar o en la conversion de bytes a Stream. Os dejo el bloque de codigo con esta prueba que da error.

     

    tmpStream = new MemoryStream();

     

    //Convierto Bitmap en Stream

    tmpBitmap.Save(tmpStream, ImageFormat.Jpeg);

    tmpArray = new byte[tmpStream.Length];

     

    //Convierto Stream en byte[]

    tmpStream.Read(tmpArray,0,(int)tmpStream.Length);

     

     

    tmpStream = new MemoryStream();

    //Convierto el byte en Stream

    tmpStream.Write(tmpArray, 0, tmpArray.Length);

     

    //Convierto el Stream en byte[]  AQUI ES DONDE APARECE EL ERROR

    tmpBitmap = new Bitmap(tmpStream);

     

    Si alguien me puede dar una pista de porqué puede ocurrir se lo agradecería mucho.

     

    Gracias a todos!!!

     

     

    jueves, 05 de junio de 2008 7:10

Respuestas

  • Hola!!

    Por fin encontré el error. Resulta que al pasar de MemoryStream a Byte[], el puntero estaba al final del Stream, luego no em estaba pasando los datos al Byte [].

    Para solucionarlo lo unico que he hecho es poner esta linea de codigo antes de convertir el stream en byte[]: tmpStream.Position = 0

    Gracias!!

     

    jueves, 05 de junio de 2008 7:59