Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar, mostrar y modificar imágenes a una base de datos (https://www.clubdelphi.com/foros/showthread.php?t=90957)

Jaroncp 17-10-2016 22:25:30

Insertar, mostrar y modificar imágenes a una base de datos
 
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, gracias por tu colaboración :)Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo, 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

Cita:

Empezado por Jaroncp (Mensaje 509647)
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

Cita:

Empezado por Jaroncp (Mensaje 509675)
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:

Código Delphi [-]
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

Código Delphi [-]
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. ^\||/


La franja horaria es GMT +2. Ahora son las 07:02:02.

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