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

pasar un datarow con image a byte[]

Estas en el tema de pasar un datarow con image a byte[] en el foro de .NET en Foros del Web. Hola a todos! Bueno, os cuento lo que me viene rondando la cabeza. Tengo una tabla en sql en los que cada fila tiene una ...
  #1 (permalink)  
Antiguo 11/09/2009, 05:10
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años, 1 mes
Puntos: 8
pasar un datarow con image a byte[]

Hola a todos!

Bueno, os cuento lo que me viene rondando la cabeza.
Tengo una tabla en sql en los que cada fila tiene una columna del tipo image con un archivo dentro. Esto lo tengo resuelto, los usuario suben un archivo y se sube. Lo que me pasa ahora es que al acceder a ellos no encuentro como se lee. Lo primero que me pasa es que estoy acostumbrado a crear los objetos a través de un dataRow donde cada propiedad del objeto es una columna del datarow con lo siguiente si quisiera meter el nombre del archivo:

this.Documentos_ID = Convert.ToString(dr["AVTDocumentos_ID"]);

Pero mi otra propiedad es de tipo byte [] Documentos_Archivo y no puedo hacer ningún cast que me pase del dr["AVTDocumentos_Archivo"] que se supone que lleva un archivo a byte[].

No se si me he explicado bien???

Saludos y gracias de antemano!
  #2 (permalink)  
Antiguo 11/09/2009, 06:08
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 8 meses
Puntos: 3
Respuesta: pasar un datarow con image a byte[]

Hola titanikoktf!!

mira, te pongo el código de como hago yo para mostrar una imagen en un picturebox a partir de un datarow. A ver si te sirve:

Código:
Dim Fila as DataRow
Fila = DataSet.Tables("Prueba").Rows(0)

Dim a As Byte() = Fila.Item("Imagen")
Dim b As New System.IO.MemoryStream(a, 0, a.Length)
b.Write(a, 0, a.Length)
PictureFoto.Image = Image.FromStream(b)
Saludos!
  #3 (permalink)  
Antiguo 11/09/2009, 06:34
 
Fecha de Ingreso: abril-2008
Ubicación: Frente a mi máquina que suele estar en ... Cartagena-España
Mensajes: 106
Antigüedad: 16 años, 1 mes
Puntos: 8
Respuesta: pasar un datarow con image a byte[]

gracias por la respuesta pero se me olvidó decir que estaba en C#.
Me sirve porque empiezo a entender cosas pero no del todo, pero es un poco distinto a como tu lo planteas ya que no consigo meter la columna del datarow en byte [].
El método que no consigo que pite, recibe un datarow llamado (dr) con dos columnas, ID y Archivo. Entonces para sacar el ID que es un String hago lo siguiente:

(Estas son las dos propiedades)
public String ID { get; set; }
public byte [] Archivo { get; set; }


if (dr.Table.Columns.Contains("ID") && dr["ID"] != null) //Si recibo esa columna y no está vacía
{
this.Documentos_ID = Convert.ToString(dr["AVTDocumentos_ID"]); // lo asigno
}
//Y ahora el jodido maldito ;)

if (dr.Table.Columns.Contains("Archivo") && dr["Archivo"] != null)
{//Aqui intento hacer lo que me comentas pero no consigo traducirlo a C#..
byte [] a = ....... // que sería el equivalente a Dim a As Byte() = Fila.Item("Imagen")


//Supongo que una vez hecho esto vendría
Dim b As New System.IO.MemoryStream(a, 0, a.Length)
b.Write(a, 0, a.Length)

y entonces el Response para abrirlo o guardarlo

}

Gracias jarogo y sigo probando!!
  #4 (permalink)  
Antiguo 11/09/2009, 09:39
 
Fecha de Ingreso: agosto-2007
Mensajes: 25
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: pasar un datarow con image a byte[]

amigo ahi esta como lo hago yo en C# espero te sirva..!!!

Código:
txtImagen.Image = (tTempo.Rows[0]["imagen"] is DBNull)
                        ? null
                        : Bytes2Image((Byte[])tTempo.Rows[0]"imagen"]);


public static Image Bytes2Image(Byte[] nBytes)
        {
            if (nBytes == null) return null;

            var ms = new MemoryStream(nBytes);
            try { return new Bitmap(ms); }
            catch { return null; }
        }
espero te sirva
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:01.