PDA

Ver la Versión Completa : Insertar, mostrar y modificar imágenes a una base de datos


Jaroncp
17-10-2016, 22:25:30
Hola necesito ayuda, tengo un problema, soy nuevo en Delphi, y necesito insertar, mostrar y modificar imágenes a una base de datos atreves del mismo Delphi, busqué mucho pero no encuentro lo suficiente, si me pudieran ayudar les agradecería mucho.
Estoy usando Delphi7 y mysql, y la aplicación es para un inventario que muestre la información del producto.

Casimiro Notevi
17-10-2016, 23:56:29
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

Jaroncp
18-10-2016, 00:49:28
Gracias :D ya leí la guía de estilo. :)

TiammatMX
18-10-2016, 00:59:04
Hola necesito ayuda, tengo un problema, soy nuevo en Delphi, y necesito insertar, mostrar y modificar imágenes a una base de datos atreves del mismo Delphi, busqué mucho pero no encuentro lo suficiente, si me pudieran ayudar les agradecería mucho.
Estoy usando Delphi7 y mysql, y la aplicación es para un inventario que muestre la información del producto.

¿Y la duda específica es ... ?:D:D

Neftali [Germán.Estévez]
18-10-2016, 09:24:02
Intenta concretar un poco más.
O comentarnos lo que estás probando (con código a ser posible) y lo que te está fallando.
De otra forma es difícil contestarte de forma concreta.

Recuerda poner títulos descriptivos a los mensajes (este ya lo he cambiado yo).

Jaroncp
18-10-2016, 18:45:02
Lo siento no me explique bien, por ejemplo, yo tengo un producto con sus datos, el id, el nombre, el precio y la descripción; pero necesito una imagen para visualizar ese producto y quiero que esta imagen esté en la base de datos, como formato BLOB.

Lo que necesito saber es cómo convierto la imagen para poderla guardar en la base de datos a través de Delphi.

Espero haberme explicado bien. XD Y gracias :)

bucanero
18-10-2016, 19:01:44
revisa este enlace, aqui se habla de guardar el contenido de una imagen dentro de un campo blob en la base de datos

https://www.clubdelphi.com/foros/showthread.php?t=77447

Un saludo

Casimiro Notevi
18-10-2016, 19:26:52
Lo que necesito saber es cómo convierto la imagen para poderla guardar en la base de datos a través de Delphi.No tienes que convertir nada.

Jaroncp
18-10-2016, 19:34:43
Sí lo revise, pero no termino de comprender muy bien que es lo que hace, ¿Cómo esta insertando la imagen o el BLOB en el registro de la base de datos?
Como dije soy muy nuevo en el este lenguaje, todavía me falta por aprender, Disculpen mi ignorancia XD

Jaroncp
18-10-2016, 19:41:16
¿Cómo? yo estuve leyendo que no puedo insertar una imagen JPG a una base de datos, y eso es lo que necesito guardarla ahí, que cuando haga una consulta me muestre la información y la imagen del producto.
yo ya había echo un proyecto parecido pero desde PHP, donde yo insertaba la imagen a la base de datos, pero no termino de comprender como lo hago desde Delphi. :(

AgustinOrtu
18-10-2016, 19:51:44
Una imagen no es mas que un monton de bytes. Simplemente guardas los bytes, asi como vienen, en "binario puro" o "raw binary"

Jaroncp
18-10-2016, 19:56:42
Sí eso lo sé, son solo bits, pero no es que no lo puedo guardar en con el formato, por ejemplo JPG, o PNG..., ¿O si puedo?, por que si es así las cosas serían más sencillas.

AgustinOrtu
18-10-2016, 20:37:29
El "formato" ya lo tenes, es el stream o todos los bytes. Eso ya es la imagen con el formato. Luego, todos los archivos tienen una cabecera en donde se guarda informacion sobre que tipo de archivo y que formato tiene. Pero creo que estas complicandote con cosas que ya estan resueltas

Lo unico que tenes que hacer es guardar un "valor" y luego recuperar y mostrar ese "valor". Tipicamente lo que se hace es pasar la imagen a algun descendiente de TStream (por ejemplo, TMemoryStream) y se envia un comando a la BD para que guarde ese stream.

Luego, haces un query por ese campo, lo obtienes como stream, y se lo pasas al componente de imagen

Codigo medio de memoria, pero la idea es esta:


procedure GuardarImagen(Imagen: TImage);
var
StreamImagen: TStream;
begin
qry := crear tu componente query
qry.Connection := le asignas la conexion
qry.SQL.Text := 'INSERT INTO TABLA (CampoImagen) VALUES (:CampoImagen)';
StreamImagen := TMemoryStream.Create;
try
Imagen.SaveToStream(StreamImagen);
StreamImagen.Position := 0;
qry.ParamByName('CampoImagen').AsSteam := StreamImagen;
// puede ser en lugar de .AsSteam, .Value, o .LoadFromStream; depende de los componentes
qry.Execute;
finally
StreamImagen.Free;
end;
end



procedure MostrarImagen;
begin
qry := ...
qry.Open;
Image1.LoadFromStream(qry.FieldByName('CampoImagen').AsStream);
end;


Tambien es posible pasar la imagen a un monton de otras representaciones; por ej BASE64 es muy usada

Jaroncp
18-10-2016, 20:42:08
Muchas gracias, voy a probar el código, cualquier duda que tenga se las hago saber. ^\||/