Insertar Imagen en Tabla MySQL Con Delphi Foro Proyecto AjpdSoft

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft http://www.ajpdsoft.com/modules.php?name=Foros&file=vi

Views 100 Downloads 2 File size 261KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&...

PayPal Bolivia Pague y Reciba Pagos con PayPal. Es Fácil y Seguro. Regístrese Hoy! www.paypal.com/bo

Nuevo usuario

Inicio : Descargas : Trucos VB.Net, PHP, Delphi : Manuales : Código Fuente

Principal

Me gusta

· Inicio · Buscar · Contactar · Descargas · Enciclopedia · Estadísticas · Eventos · Foros · Manuales, Artículos · Nuestra historia · Quiénes somos · Recomiéndanos · Temas · Top 10 · Trucos Delphi, PHP, Java, Visual Studio

290

Proyecto AjpdSoft: Foros

Insertar imagen en tabla MySQL con Delphi

Foros de discusión » Borland Delphi, Codegear Delphi .Net Ver tema anterior :: Ver tema siguiente

Autor varios

· Tu cuenta

66

Magnífico usuario

Mensaje Asunto: Insertar imagen en tabla MySQL con Delphi

Estoy desarrollando una aplicación de Facturación, tengo una tabla de usuarios, con los datos Registrado: Oct 10, 2006 Mensajes: 1265

Descargas Últimas Descargas · AjpdSoft Socket VB.Net

Utilizo Delphi 6 y MySQL como base de datos.

· AjpdSoft Acceso nativo MySQL enlazado VB.Net

¿Qué tipo de datos debo poner en la tabla de MySQL para guardar la foto? quiero guardar la foto en la tabla, no quiero guardarla en una carpeta del equipo pues quiero que sea accesible desde

· AjpdSoft Acceso nativo MySQL VB.Net · AjpdSoft Envío SMS puerto serie módem GSM VB.Net · AjpdSoft InfoWifi Android · AjpdSoft Lector Códigos de Barras Android paquete apk para instalar · AjpdSoft Lector Códigos de Barras Android en Google App Inventor · AjpdSoft Envío EMail SSL Términos Visual Basicenciclopedias .Net

fuera de la oficina. Publicado: Vie Mar 12, 2010 11:45 am

alonsojpd Administrador/Moderador

Asunto: Re: Insertar imagen en tabla MySQL con Delphi

varios escribió: Registrado: Sep 16, 2003 Mensajes: 1853 Ubicación: España

Estoy desarrollando una aplicación de Facturación, tengo una tabla de usuarios, con los datos típicos: nick, contraseña, nombre, etc. Quiero añadirle a esta ventana la funcionalidad de insertar una foto por usuario y que aparezca al mostrar la ventana. Utilizo Delphi 6 y MySQL como base de datos. ¿Qué tipo de datos debo poner en la tabla de MySQL para guardar la foto? quiero guardar la foto en la tabla, no quiero guardarla en una carpeta del equipo pues quiero que sea accesible desde fuera de la oficina.

Últimos · Código HTML y JavaScript · repquota para mostrar imagen en Enc.: Comandos Linux ventana Flash

Puedes hacer lo siguiente:

· quotacheck · AjpdSoft Insertar Evento Enc.: Comandos Linux Google Calendar VB.Net

1. En la tabla de MySQL, el tipo de datos a utilizar para el campo que contendrá la foto es LONGBLOB.

· quotaoff · AjpdSoft Agenda Enc.: Comandos Linux Telefónica Android · quotaon · AjpdSoft Proceso segundo Enc.: Comandos Linux plano con progreso VB.Net · quota · Formulario inicio sesión en Enc.: Comandos Linux Delphi y MySQL, validar usuario en LDAP · openssl Enc.: Comandos Linux · AjpdSoft Reiniciar Autoincremento Paradox ·w Código Fuente Delphi Enc.: Comandos Linux · AjpdSoft Reiniciar Apagar · yes equipo remoto Código Enc.: Comandos Linux Fuente Delphi Eventos · zenity Enc.: Comandos Linux Diciembre Lo más descargado · AjpdSoft Registro de OCX · biosdecode M Fuente M J Delphi V S yD DLL LCódigo Enc.: Comandos Linux

1

2 3

· AjpdSoft Generador de · lprm 4 5 de6 barras 7 8 9 10 códigos Enc.: Comandos Linux

11 12 13 14 15 16 17

· AjpdSoft Conversor · jobs Hexadecimal, Decimal, 18 19 20 21 22 23 24 Enc.: Comandos Linux Texto - Código Fuente Delphi 25 26 27 28 29 30 31 · lpc Enc.: Comandos Linux · AjpdSoft Aviso cambio IP

1 de 6

típicos: nick, contraseña, nombre, etc. Quiero añadirle a esta ventana la funcionalidad de insertar una foto por usuario y que aparezca al mostrar la ventana.

2. En el formulario de inserción de la foto, si quieres utilizar el formato JPEG, puedes utilizar el siguiente código. En el formulario debes añadir un TButton (nosotros lo hemos llamado "bInsertarFoto"), un TImage (nosotros lo hemos llamado "imgFoto") y un TOpenPictureDialog (nosotros lo hemos llamado "dlAbrirFoto"). En el evento Click del TButton añades: Código: procedure TformGUsuario.bInsertarFotoClick(Sender: TObject); var fs : TMemoryStream; imgJPG : TJpegImage; begin if dlAbrirFoto.Execute then begin imgJPG := TJpegImage.create; fs := TMemoryStream.Create; try imgJPG.LoadFromFile(dlAbrirFoto.FileName); imgJPG.SaveToStream(fs); fs.Seek(0, soFromBeginning); try imgFoto.Picture.Assign(imgJPG); tablaUsuarioFoto.LoadFromStream(fs); finally fs.free; end;

19/12/2011 18:37

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft

Consejos

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&...

except on E : Exception do begin MessageDlg('Asegúrese de que la imagen seleccionada es de ' + ' tipo JPEG con formato correcto. ' + chr(13) + chr(13) + 'El error concreto: ' + E.ClassName + ': ' + E.Message, mtError, [mbOK], 0); end; end; end; end;

Ten en cuenta que: 1. En el USES del formulario debes añadir "jpg", algo así: Código: uses Messages, SysUtils, Classes, Graphics, Controls, Dialogs, StdCtrls, DBCtrls, Buttons, ExtCtrls, db, DBTables, forms, ComCtrls, variants, windows, Mask, ExtDlgs, jpeg; type ...

2. Ten en cuenta también que "tablaUsuarioFoto" es el nombre del campo "Foto" de la tabla "tablaUsuario" (un componente de tipo TTable). Hemos añadido el campo "foto" a la tabla "usuario" de MySQL y lo hemos agregado al componente "TTable" de Delphi:

Lenguajes Selecciona Idioma de la Interfaz:

Spanish

Webs recomendadas Orasite.com

Coloca tu web aquí

Language english English

Publicado: Vie Mar 12, 2010 12:03 pm

varios Magnífico usuario

Asunto: Re: Insertar imagen en tabla MySQL con Delphi

alonsojpd escribió: Registrado: Oct 10, 2006 Mensajes: 1265

Puedes hacer lo siguiente: 1. En la tabla de MySQL, el tipo de datos a utilizar para el campo que contendrá la foto es LONGBLOB. 2. En el formulario de inserción de la foto, si quieres utilizar el formato JPEG, puedes utilizar el siguiente código. En el formulario debes añadir un TButton (nosotros lo hemos llamado "bInsertarFoto"), un TImage (nosotros lo hemos llamado "imgFoto") y un TOpenPictureDialog (nosotros lo hemos llamado "dlAbrirFoto"). En el evento Click del TButton añades:

Código: procedure TformGUsuario.bInsertarFotoClick(Sender: TObject); var fs : TMemoryStream; imgJPG : TJpegImage; begin if dlAbrirFoto.Execute then begin imgJPG := TJpegImage.create; fs := TMemoryStream.Create; try imgJPG.LoadFromFile(dlAbrirFoto.FileName); imgJPG.SaveToStream(fs); fs.Seek(0, soFromBeginning); try

2 de 6

19/12/2011 18:37

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&...

imgFoto.Picture.Assign(imgJPG); tablaUsuarioFoto.LoadFromStream(fs); finally fs.free; end; except on E : Exception do begin MessageDlg('Asegúrese de que la imagen seleccionada es de ' + ' tipo JPEG con formato correcto. ' + chr(13) + chr(13) + 'El error concreto: ' + E.ClassName + ': ' + E.Message, mtError, [mbOK], 0); end; end; end; end;

Ten en cuenta que: 1. En el USES del formulario debes añadir "jpg", algo así: Código: uses Messages, SysUtils, Classes, Graphics, Controls, Dialogs, StdCtrls, DBCtrls, Buttons, ExtCtrls, db, DBTables, forms, ComCtrls, variants, windows, Mask, ExtDlgs, jpeg; type ...

2. Ten en cuenta también que "tablaUsuarioFoto" es el nombre del campo "Foto" de la tabla "tablaUsuario" (un componente de tipo TTable). Hemos añadido el campo "foto" a la tabla "usuario" de MySQL y lo hemos agregado al componente "TTable" de Delphi:

Ok, me funciona la inserción, me aparece la imagen en el TImage y, supongo, se inserta en la tabla de MySQL en el campo "foto" de tipo LONGBLOB. Pero ¿cómo muestro la imagen, como la obtengo de la tabla y la muestro en el formulario para el registro actual? Publicado: Vie Mar 12, 2010 12:08 pm

alonsojpd Administrador/Moderador

Asunto: Re: Insertar imagen en tabla MySQL con Delphi

varios escribió: Registrado: Sep 16, 2003 Mensajes: 1853 Ubicación: España

Ok, me funciona la inserción, me aparece la imagen en el TImage y, supongo, se inserta en la tabla de MySQL en el campo "foto" de tipo LONGBLOB. Pero ¿cómo muestro la imagen, como la obtengo de la tabla y la muestro en el formulario para el registro actual?

En el evento "FormCreate" puedes añadir: Código: procedure TformGUsuario.FormCreate(Sender: TObject); var fs : TMemoryStream; imgJPG : TJpegImage; begin if not tablaUsuario.FieldByName('foto').IsNull then begin imgJPG:= TJpegImage.create; fs := TMemoryStream.Create(); tablaUsuarioFoto.SaveToStream(fs); fs.Seek(0, soFromBeginning); imgJPG.LoadFromStream(fs); try imgFoto.Picture.Assign(imgJPG); finally fs.free; end; end; end; Publicado: Vie Mar 12, 2010 6:11 pm

agustinbus Excelente usuario

Registrado: Apr 17, 2009 Mensajes: 38

Asunto: Otra manera diferente

Yo lo hago de una manera mas simple, aunque no se si mejor. Creo un campo LONGBLOB en mi tabla sql por ejemplo: Imagen. Luego haces dobre clic en el ADOQuery que se refiere a la tabla que tiene el campo Imagen y

3 de 6

19/12/2011 18:37

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&...

aparece lo siguiente (sigue los pasos de la imagen): DONDE DICE "CLIC DERECHO Y APARECE ESTO", hay que hacer clic derecho y seleccionar New Field

Una vez hecho esto vamos al evento onclick de un boton por ejemplo y ponemos el siguiente codigo: Código: ADOQuery1.Open; ADOQuery1.Insert; if OpenPictureDialog1.FileName '' then begin ADOuery1IMAGEN.LoadFromFile (OpenPictureDialog1.FileName); end; ADOQuery1.Post

De esa manera lo almacenamos en la base de datos y para poder mostrarlo en un TImage ponemos este codigo: Código: if ADOQuery1.FieldByName ('IMAGEN').AsVariant '' then begin Image1.Picture.Bitmap.Assign(ADOQuery1IMAGEN ); end else begin Form1.Image1.Picture := Nil; end;

ESTE EJEMPLO SOLO SIRVE PARA IMAGENES .BMP!!! Publicado: Vie Mar 12, 2010 7:31 pm

alonsojpd Administrador/Moderador

Asunto: Re: Otra manera diferente

agustinbus escribió: Registrado: Sep 16, 2003 Mensajes: 1853 Ubicación: España

Yo lo hago de una manera mas simple, aunque no se si mejor. Creo un campo LONGBLOB en mi tabla sql por ejemplo: Imagen. Luego haces dobre clic en el ADOQuery que se refiere a la tabla que tiene el campo Imagen y aparece lo siguiente (sigue los pasos de la imagen): DONDE DICE "CLIC DERECHO Y APARECE ESTO", hay que hacer clic derecho y seleccionar New ...

Muchísimas gracias Agustinbus por tu aportación. Efectivamente, si no es necesario utilizar JPG, el proceso es mucho más sencillo, tal y como nos indicas, incluso es posible utilizar el componente TDBImage, con el que no es necesario programar nada para que muestre la imagen. Es más, este componente admite copiar y pegar, es decir, se puede pegar una imagen en el TDBImage sin código fuente, con Control C y Control V. Pero el inconveniente es que este procedimiento sólo vale para imágenes BMP. Así pues, lo que hemos expuesto nosotros más lo que ha expuesto Agustinbus servirá para que el

4 de 6

19/12/2011 18:37

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&...

usuario tenga las dos posibilidades. Publicado: Dom Mar 14, 2010 10:03 am

agustinbus Excelente usuario

Asunto: Re: Otra manera diferente

alonsojpd escribió: Registrado: Apr 17, 2009 Mensajes: 38

agustinbus escribió: Yo lo hago de una manera mas simple, aunque no se si mejor. Creo un campo LONGBLOB en mi tabla sql por ejemplo: Imagen. Luego haces dobre clic en el ADOQuery que se refiere a la tabla que tiene el campo Imagen y aparece lo siguiente (sigue los pasos de la imagen): DONDE DICE "CLIC DERECHO Y APARECE ESTO", hay que hacer clic derecho y seleccionar New ...

Muchísimas gracias Agustinbus por tu aportación. Efectivamente, si no es necesario utilizar JPG, el proceso es mucho más sencillo, tal y como nos indicas, incluso es posible utilizar el componente TDBImage, con el que no es necesario programar nada para que muestre la imagen. Es más, este componente admite copiar y pegar, es decir, se puede pegar una imagen en el TDBImage sin código fuente, con Control C y Control V. Pero el inconveniente es que este procedimiento sólo vale para imágenes BMP. Así pues, lo que hemos expuesto nosotros más lo que ha expuesto Agustinbus servirá para que el usuario tenga las dos posibilidades.

Asi es! Antes utilizaba DBImage que es muchisimo mas facil, pero si mal no recuerdo, creo que el DBImage no tiene la propiedad proportional, que es para mantener las proporciones de la imagen cuando agrandamos o achicamos el componente y la imagen no se deforme. Por esa razon utilizo Image en vez de DBImage. Todas son opciones válidas, dependiendo de lo que uno necesite. Publicado: Dom Mar 14, 2010 5:16 pm

alonsojpd Administrador/Moderador

Registrado: Sep 16, 2003 Mensajes: 1853 Ubicación: España

Asunto: Re: Otra manera diferente

Por rizar el rizo y por si le sirve a alguien, indico cómo cargar una imagen de un TTable (base de datos) en un TImage sin necesidad de agregar el campo al TTable: Código: uses ... jpeg ...

var fs : TMemoryStream; imgJPG : TJpegImage; blobF : TBlobField; begin //foto if not tabla.FieldByName('foto').IsNull then begin imgJPG := TJpegImage.create; fs := TMemoryStream.Create(); blobF := tabla.fieldbyname('foto') as TBlobField; blobF.SaveToStream(fs); fs.Seek(0, soFromBeginning); imgJPG.LoadFromStream(fs); try imgFoto.Picture.Assign(imgJPG); finally fs.free; end; end; ...

Donde: * tabla: componente TTable de Delphi. * imgFoto: componente de tipo TImage de Delphi. Publicado: Lun Mar 15, 2010 11:02 am Mostrar mensajes de anteriores: Todos los mensajes

El más antiguo primero

Ir Todas las horas son GMT - 1 Horas

Foros de discusión » Borland Delphi, Codegear Delphi .Net

5 de 6

19/12/2011 18:37

Insertar imagen en tabla MySQL con Delphi Foro Proyecto AjpdSoft

http://www.ajpdsoft.com/modules.php?name=Foros&file=viewtopic&...

Cambiar a: Borland Delphi, Codegear Delphi .Net

Ir

Key Puede publicar nuevos temas No puede responder a temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas

en este en este en este en este en este

foro foro foro foro foro

Foros ©

Esta web NO CONTIENE ningún tipo de software malicioso (malware), por ello podéis descargar el código fuente de los programas gratuitamente

6 de 6

19/12/2011 18:37