FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Almacenamiento de Iágenes en Base de Datos
Utilizo Firebird 1.00 con componentes de acceso IBO 4. Estoy utilizando el siguiente procedimiento para cargar y visualizar las imagenes:
Código:
PARA CARGAR: procedure TExp700.BotonCargar(Sender: TObject); var Jpg: TJpegImage; Stream: TMemoryStream; FileExt: string; GraphType: TGraphType; begin if OpenPicture.Execute then begin Jpg := nil; Stream := nil; try Stream := TMemoryStream.Create; FileExt := LowerCase(ExtractFileExt(OpenPicture.FileName)); if (FileExt = '.bmp') or (FileExt = '.dib') then begin GraphType := gtBitmap; Stream.Write(GraphType, 1); with Imagen.Picture.Bitmap do begin LoadFromFile(OpenPicture.FileName); Imagen.Picture.Bitmap.SaveToStream(Stream); end; end else if (FileExt = '.ico') then begin GraphType := gtIcon; Stream.Write(GraphType, 1); with Imagen.Picture.Icon do begin LoadFromFile(OpenPicture.FileName); Imagen.Picture.Bitmap.SaveToStream(Stream); end; end else if (FileExt = '.emf') or (FileExt = '.wmf') then begin GraphType := gtMetafile; Stream.Write(GraphType, 1); with Imagen.Picture.Metafile do begin LoadFromFile(OpenPicture.FileName); Imagen.Picture.Bitmap.SaveToStream(Stream); end; end else if (FileExt = '.jpg') or (FileExt = '.jpeg') or (FileExt = '.jpe') then begin Jpg := TJpegImage.Create; Jpg.LoadFromFile(OpenPicture.FileName); Imagen.Picture.Assign(Jpg); GraphType := gtJpeg; Stream.Write(GraphType, 1); Jpg.SaveToStream(Stream); end; Stream.Position := 0; TBlobField(QueryTra.FieldByName('EXPTRA_TEXTO')).LoadFromStream(Stream); except jpg.Free; Stream.Free; raise; end; jpg.Free; Stream.Free; end; end; PARA VISULIZAR procedure TExp700.QueryTraAfterScroll(DataSet: TDataSet); var Stream: TMemoryStream; Jpg: TJpegImage; GraphType: TGraphType; begin inherited; Jpg := nil; Stream := nil; try Stream := TMemoryStream.Create; TBlobField(QueryTra.FieldByName('EXPTRA_TEXTO')).SaveToStream(Stream); if Stream.Size > 0 then begin Stream.Position := 0; Stream.Read(GraphType, 1); case GraphType of gtBitmap: Imagen.Picture.Bitmap.LoadFromStream(Stream); gtIcon: Imagen.Picture.Icon.LoadFromStream(Stream); gtMetafile: Imagen.Picture.Metafile.LoadFromStream(Stream); gtJpeg: begin Jpg := TJpegImage.Create; Jpg.LoadFromStream(Stream); Imagen.Picture.Assign(Jpg); end else Imagen.Picture.Assign(nil); end; end else Imagen.Picture.Assign(nil); except Showmessage('Non se poido'); Imagen.Picture.Assign(nil); end; jpg.Free; Stream.Free; end; Alguien puede ayudarme? |
#2
|
||||
|
||||
Hola.
Yo lo hago de forma similar con dbExpress y no tengo problemas. Por lo que no es que solo funcione con BDE. Además debería funcionar correctamente con IBO también, pero no puedo probarlo. Comprueba con el depurador que se ejecuta correctamente todo el código, y si te sale algún error, dínos cual es y quizá te podamos ayudar. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
Gracias por la respuesta pero ya tomé otro camino. Me pase una mañana entera intentando hacer funcionar esto y no hubo manera. Decidí comprar un componente (KDImage 59€) que además de automatizar esto permite retocar la imagen, girarla, etc..
En ocasiones los problemas son los que te llevan a las mejores soluciones. Gracias de nuevo. |
|
|
|