Guardar y cargar imagen en campo blob
Hola amigos, estoy tratando de guardar una imagen en un campo blob desde el componente timage,tambiem me gustaria saber como cargarla luego a ese timage...
¿Me hechan una mano? Saludos |
Hola
Este código lo Hizo nuestro amigo ChackAll: Esta hecho para ado (access), pero sera facil cambiarlo a IBX (firebird). Esta bien detallado, creo que se entiende bien. Saludos |
Hola amigo , gracias por responder pero.... estoy utilizando consultas para guardar los datos...lo que pasa es que estoy modificando mi formulario de alta de articulos tratando de agregar la funcion de que el usuario pueda seleccionar una imagen para un producto, ya tengo todo el formulario muy funcional , pero este funciona con consultas para guardar la info... lo que me esta dando palos es guardar la imagen :(
Saludos! |
Hola
No entiendo amigo, el codigo que puse es lo que hace, guardar imagenes ??. Saludos |
Cita:
por cierto , me da error en esta linea:
Código:
object or class type requierd |
Hola
No entiendo la necesidad de un query si solo se va y actualiza un campo, que mas da ?. Revisa este: Saludos |
Hola tengo una duda, respecto a la solucion dada.. En que formato se guarda la imagen en la base de datos? como una cadena stream o como una imagen?
|
Se guarda en formato binario plano o "raw"
No se puede guardar "como una imagen" :) |
Lo que se guarda en una imagen, asi de sencillo, que al guardarla la puedes transformar a .jpg o un formato de menor tamaño, por el tamaño y a la hora de recuperación no sea lento.
Enviado desde mi SM-G900H mediante Tapatalk |
Cargar Imagen hacia tImage desde Base de datos
Cita:
Hola a Todos Buscando una solución a mi problema, me encontré con este hilo. El procedimiento de guardar la imagen en el campo blob parece que lo hace sin problemas, sin embargo al tratar de obtener la imagen y asignarlo a un TImage me da problemas. Estoy utilizando Delphi 5 con base de datos Firebird. Les comparto el código Procedimiento que guarda la Imagen: procedure TfrmDetalleProducto.GuardarClick(Sender: TObject); Var tabla : tTable; Stream: TStream; bmp: TBitmap; jpg : TJPEGImage; begin tabla := tTable.Create(nil); tabla .DatabaseName := Sessions[0].Databases[0].DatabaseName; tabla .TableName := 'Productos'; tabla .Active := True; tabla.Insert; jpg := TJPEGImage.Create; bmp := TBitmap.Create; bmp.LoadFromFile(Global.POS.FRutaImagenBtn + EdRutaImagen.text); jpg.Assign(bmp); bmp.Destroy; Stream := tabla.CreateBlobStream(tabla.FieldByName('IMAGEN'), bmWrite); jpg.SaveToStream(Stream); Stream.Destroy; tabla.post; end; Procedimiento para asignar la imagen al componente tImage procedure TfrmDetalleProducto.CargarImagen(Sender: TObject); Var tabla : tTable; Stream: TStream; bmp: TBitmap; jpg: TJPEGImage; begin tabla := tTable.Create(nil); tabla .DatabaseName := Sessions[0].Databases[0].DatabaseName; tabla .TableName := 'Productos'; tabla .Active := True; If tabla.Locate('CODIGO',245,[loCaseInsensitive]) then begin jpg := TJPEGImage.Create; Stream := tabla.CreateBlobStream(tabla.FieldByName('IMAGEN'), bmRead); jpg.LoadFromStream(Stream); <------------ AQUI DA EL ERROR Stream.Destroy; bmp.Assign(jpg); ImgProducto.Picture.Assign(bmp); end; end; El error que despliega es: Project x.exe raised exception class EJPEG with message 'JPEG error #50'. Process stopped. Use Step or Run to continue. Agradezco me puedan colaborar Saludos |
Se supone que has añadido jpeg al uses:
Código:
uses jpeg; Y recuerda poner los tags al código fuente, ejemplo: Gracias :) |
Claro Casimiro, el uses del jpeg esta añadido.
|
Puede que no sea un jpg, aunque su extensión sea jpg.
|
Cita:
Lo probé con un archivo bmp y otro jpg. Claro está que modifiqué el código para cada tipo de archivo. No si tienes otra manera de hacerlo para intentarlo. Saludos |
Desde aquí no podemos hacer mucho más, yo comprobaría con otro jpg, vaya a ser que ese esté mal.
|
Intenta de esta manera
en el private
Para cargar la imagen
y esto para guardar
Saludos... |
La franja horaria es GMT +2. Ahora son las 08:09:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi