Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   .NET (http://www.forosdelweb.com/f29/)
-   -   De byte[] a Imagen (http://www.forosdelweb.com/f29/byte-imagen-603595/)

jhonwilliams 07/07/2008 11:21

De byte[] a Imagen
 
Compañeros, hace algun tiempo se discutió en el foro como pasar imagenes a arreglos de bytes y mostraron esta funcion.

Código:

public static byte[] tomaBytes(string archivin)
        {       
            byte[] imagenBytes;
            if (File.Exists(archivin) == true)
            {
                imagenBytes = File.ReadAllBytes(archivin);
            }
            return imagenBytes;
        }

Ahora quisiera saber como obtener los bytes apartir de un objeto tipo Bitmap, por decir algo creo este código:
Código:

  Bitmap tmpBitmap = new Bitmap(archivin);
Como hago para obtener los byte[] del tmpBitmap?

Y como hacer el proceso contrario, si tengo un arreglo de bytes como hacer para exportarlo y crear un archivo de imagen en el disco duro.

Gracias.

Peterpay 07/07/2008 11:31

Respuesta: De byte[] a Imagen
 
sitienes estos metodos para q convertilos a byte array. mejor pasalo a stream con el save y de ahi sacas tdoos los datos.

Bitmap.Save(ruta)
o
Bitmap.Save(stream,formato);

Bitmap x = new Bitmap();
MemoryStream mystream = new MemoryStream();
x.Save(mystream, System.Drawing.Imaging.ImageFormat.Bmp);
mystream.ToArray()

jhonwilliams 07/07/2008 12:55

Respuesta: De byte[] a Imagen
 
Estoy usando el objeto Bitmap para luego guardarlo como jpg, es esto correcto o ahi otro objeto mas apropiado para crear el jpg?

Gracias
:adios:

jhonwilliams 07/07/2008 13:01

Respuesta: De byte[] a Imagen
 
Cita:

Iniciado por Peterpay (Mensaje 2480253)
sitienes estos metodos para q convertilos a byte array.

Lo tengo en un arreglo de bytes porque asi lo guardo en la base de datos, pero si quiero generar un reporte html e incluir la imagen, debe exportar el arreglo de bytes y generar el archivo de imagen con este arreglo.

Gracias.
:adios:

HenrydeSousa 08/07/2008 10:19

Respuesta: De byte[] a Imagen
 
Hola, acá te dejo un link que encontré hace tiempo intentanto hacer lo mismo pero para una Pocket PC:
http://www.mygnet.net/articulos/c_sh..._de_datos.1161

Y este el code que utilizo para guardar una imagen en un arreglo de bytes en la BD y luego para exportarlo a una imagen.


Código PHP:

            string sBase64 "";


            
//-----------------------------------------------------------------------
            //asi lo guardo
            
string camino;
            
camino Path.Combine(AppPath"CapturedSignature1.bmp");


            
System.IO.FileStream fs = new System.IO.FileStream(caminoSystem.IO.FileMode.OpenOrCreateSystem.IO.FileAccess.Read);            
            
BinaryReader br = new BinaryReader(fs);
            
byte[] MyData = new byte[fs.Length];            
            
br.Read(MyData0MyData.Length);

            
//Guardamos el arreglo de bytes 
            
sBase64 Convert.ToBase64String(MyData);

            
fs.Close();
            
fs null;
            
br null;
            
MyData null;

            
//Aquí guardo el arreglo de bytes en la base de datos.

            
File.Delete(camino);
            
// -------------------------------------------------------------------
            
MessageBox.Show("Datos guardados satisfactoriamente""Mensaje del Sistema"MessageBoxButtons.OKMessageBoxIcon.NoneMessageBoxDefaultButton.Button1);

            
//----------------------------------------------------------------------- 


Código PHP:

            /*Guardamos en una cadena la ruta de la imagen donde se descodificará. Es decir, despues de este proceso, estara guardada en el disco duro del servidor*/
            
string camino;
            
camino Path.Combine(AppPath"CapturedSignature1.bmp");
            
            
//Utilizamos un FileStream para crear un nuevo archivo temporal 
            
FileStream fs = new FileStream(caminoFileMode.CreateNewFileAccess.Write);

            
//Un BinaryWriter para escribir la imagen descodificada 
            
BinaryWriter bw = new BinaryWriter(fs);

            
//Un arreglo de Bytes para descodificar la imagen 
            
byte[] bytes;
            
bytes Convert.FromBase64String(sBase64);

            
//Escribimos la imagen 
            
bw.Write(bytes);

            
//Liberamos memoria 
            
fs.Close();
            
bytes null;
            
bw null;
            
sBase64 null

Espero te sirva.
Saludos...


La zona horaria es GMT -6. Ahora son las 17:25.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.