Mostar Imagen almacenada en Ms Access en Win Forms

11/02/2005 - 04:48 por Almircar Montilla | Informe spam
Saludos a tod@s,

Actualmente estoy migrando una aplicación hecha en MS Access a C#, pero me
he encontrado un problema.

La aplicación anterior tiene una gran cantidad de fotos almacenadas en
campos "Objeto OLE" de MS Access, gravadas hay desde la aplicación de
Access, y cuando trato de mostrarla en un campo pictureBox en un Win Foms me
da un error "parametro utilizado no valido", lo extraño es que si almaceno
una foto desde el win Forms en la misma base de datos y luego traigo el
registro desde el win forms me lo muestra.



Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 pablo crosio
11/02/2005 - 14:59 | Informe spam
hola!

todo depende que como hayas almacenado las imagenes originales con el
Access ¿tenes algo del codigo anterior para ver como las almacenabas?

salu2!!

pablo

"Almircar Montilla" escribió:

Saludos a ,

Actualmente estoy migrando una aplicación hecha en MS Access a C#, pero me
he encontrado un problema.

La aplicación anterior tiene una gran cantidad de fotos almacenadas en
campos "Objeto OLE" de MS Access, gravadas hay desde la aplicación de
Access, y cuando trato de mostrarla en un campo pictureBox en un Win Foms me
da un error "parametro utilizado no valido", lo extraño es que si almaceno
una foto desde el win Forms en la misma base de datos y luego traigo el
registro desde el win forms me lo muestra.



Gracias de antemano.







Respuesta Responder a este mensaje
#2 Marino Posadas
13/02/2005 - 21:59 | Informe spam
Hola Almircar

El problema es que Access guarda las imágenes con un "offset" de 78 bytes en
la cabecera que te deberás de saltar. Si por ejemplo, has utilizado un
objeto Binding para vincular el campo gráfico a un PictureBox, puedes hacer
la siguiente transformación en el evento Format del objeto para mostrarlo
correctamente:

private void PictureBox_Format(object sender, ConvertEventArgs e)
{
//Convierte los bits de imagen en un objeto Bitmap que se puede
//asignar a un PictureBox : e.Value es el valor original
byte[] img= (byte[]) (e.Value);
//Conversión
MemoryStream ms= new MemoryStream();
int offset = 78;
//Fijate que el MS se declara vacío, para podernos
//saltar los 78 bytes iniciales
ms.Write(img, offset, img.Length - offset);
Bitmap bmp = new Bitmap(ms);
ms.Close();
//Escribe el nuevo valor convertido
e.Value = bmp;
}

(Ah! y recuerda que MemoryStream está en System.IO)
con eso, no debes de tener problemas.

Saludos cordiales
Marino Posadas
MVP Visual C#

www.ElAveFenix.net



"Almircar Montilla" escribió en el mensaje
news:uYcoor%
Saludos a ,

Actualmente estoy migrando una aplicación hecha en MS Access a C#, pero me
he encontrado un problema.

La aplicación anterior tiene una gran cantidad de fotos almacenadas en
campos "Objeto OLE" de MS Access, gravadas hay desde la aplicación de
Access, y cuando trato de mostrarla en un campo pictureBox en un Win Foms
me
da un error "parametro utilizado no valido", lo extraño es que si
almaceno
una foto desde el win Forms en la misma base de datos y luego traigo el
registro desde el win forms me lo muestra.



Gracias de antemano.






email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida