Foros del Web » Programación para mayores de 30 ;) » .NET »

De byte[] a Imagen

Estas en el tema de De byte[] a Imagen en el foro de .NET en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 07/07/2008, 11:21
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
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.
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #2 (permalink)  
Antiguo 07/07/2008, 11:31
Avatar de Peterpay
Colaborador
 
Fecha de Ingreso: septiembre-2007
Ubicación: San Francisco, United States
Mensajes: 3.858
Antigüedad: 16 años, 8 meses
Puntos: 87
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()
__________________
Curso WF4
http://cursos.gurudotnet.com/ DF
Aprende HTML5
  #3 (permalink)  
Antiguo 07/07/2008, 12:55
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
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
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #4 (permalink)  
Antiguo 07/07/2008, 13:01
Avatar de jhonwilliams  
Fecha de Ingreso: marzo-2004
Ubicación: Copacabana - Colombia
Mensajes: 1.484
Antigüedad: 20 años, 2 meses
Puntos: 76
Respuesta: De byte[] a Imagen

Cita:
Iniciado por Peterpay Ver Mensaje
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.
__________________
Si mi respuesta te ha ayudado, agradezco que me regales unos puntos de Karma XD.

"Una mujer sería encantadora si uno pudiera caer en sus brazos sin caer en sus manos." (Ambrose Bierce)
  #5 (permalink)  
Antiguo 08/07/2008, 10:19
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 19 años, 7 meses
Puntos: 2
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...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:46.