Delphi - MySql Imagenes

 
Vista:

MySql Imagenes

Publicado por MSP (6 intervenciones) el 20/04/2007 18:25:07
Hola gente saludos, quisiera que me ayudaran con un pequeño detalle he cambiado de PARADOX a MYSQL5 y pues me he topado con algunos problemitas al emigrar todo un sistema administrativo..

Usando los componentes ZEUS quisiera saber como guardar imagenes en una Tabla
he definido el campo de la tabla como LONGBLOB anteriormente usaba el siguiente codigo

Tabla1.Insert;
Tabla1Imagen.LoadFromFile(IMAGEN1);
Tabla1.Post;

pero no funciona me manda un error: MYSQL server has gone away
espero alguien me pueda ayudar saludos nuevamente...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:MySql Imagenes

Publicado por BigLuis (713 intervenciones) el 21/04/2007 15:11:31
Prueba este procedimiento. A mi me funciona y lo estoy usando actualmente
procedure TFormPrincipal.GrabaFotoNueva(Foto:WideString;sDNI:String);
var
blob:TStream;
fs : TFileStream;
begin
if not ZQuery1.Active then exit;
ZQuery1.Insert;
blob := ZQuery1.CreateBlobStream(ZQuery1.FieldByName('foto'), bmWrite);
try
blob.Seek(0, soFromBeginning);
fs := TFileStream.Create(foto, fmOpenRead or fmShareDenyWrite);
try
blob.CopyFrom(fs, fs.Size);
finally
fs.Free
end;
finally
blob.Free
end;
ZQuery1.FieldByName('ref_personal').AsString:=sDNI;
ZQuery1.Post;
end;
La foto es la ruta completa y el fichero jpg con la foto. El dni lo utilizo porque es el campo que yo uso como calve relacional entre la tabla personal y la tabla fotos.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MySql Imagenes

Publicado por MSP (6 intervenciones) el 24/04/2007 18:02:17
hola mira estuve probando y ahora me pasa lo siguiente:

con imagenes *.bmp si carga la imagen en el campo pero al tratar de guardar (ZQuery.post) me manda el siguiente error.

SQL Error: Got a packet bigger than 'max_allowed_packet' bytes

y con imagenes jpg al liberar el blob (Blob.Free) me manda el siguiente error.

Bitmap image is not valid

les pongo el codigo

QInveI.Insert;
QInveIClv_art.Value := QInveclv_art.Value;
OpenDialog1.Execute;
If FileExists(Opendialog1.FileName) then
Foto := Opendialog1.FileName;

Blob := QInveI.CreateBlobStream(QInveIIMAGEN,bmWrite);
Try
Blob.Seek(0,soFromBeginning);
fs := TFileStream.Create(Foto, fmOpenRead or fmShareDenyWrite);
Try
Blob.CopyFrom(Fs, fs.Size);
Finally
fs.Free
end;
Finally
Blob.Free
end;

alguna recomendacion ¿estoy haciendo algo mal?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MySql Imagenes

Publicado por BigLuis (713 intervenciones) el 25/04/2007 17:20:16
El primer error es facil de interpretar, el Bitmap es demasiado grande. Sin mas comentarios.
En cuanto a "Bitmap image is not valid " es, probablemente a que has querido hacer algo con el stream como por ejemplo mostrarlo en algun TImage o similar, ya que en un principio al Stream le da igual que almacenes un Bitmap, un Jpg o un documento Pdf ya que lo unico que guarda sin bites y eres tu quien se tiene que encargar de saber que objeto tienes almacenado en el stream para mostrarlo adecuamente.
Si quieres otro procedmiento para mostrar la imagen di cosas.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MySql Imagenes

Publicado por MSP (6 intervenciones) el 25/04/2007 20:27:34
¿se necesita otro procedimiento para recuperar los ¨JPG? pues con los BMP el componente DBImage los recupara sin hacer nada, como se si el archivo es muy grande o hasta cuanto soporta de que depende..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MySql Imagenes

Publicado por BigLuis (713 intervenciones) el 25/04/2007 20:39:16
No. No necesariamente tienes que utilizar código, unicamente que como yo siempre rizo el rizo (no es lo mejor, que conste) en ocasiones recupero la imagen por codigo y ya de paso aprendo. Si quieres ver las imagenes jpg en un TDBImage probablemente (no estoy seguro) tenga que añadir al uses la unidad jpeg. La libreria JVCL (entre otros 400) tiene varios componentes para lo que quieres y a cada cual mejor.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:MySql Imagenes

Publicado por BigLuis (713 intervenciones) el 25/04/2007 20:39:48
No. No necesariamente tienes que utilizar código, unicamente que como yo siempre rizo el rizo (no es lo mejor, que conste) en ocasiones recupero la imagen por codigo y ya de paso aprendo. Si quieres ver las imagenes jpg en un TDBImage probablemente (no estoy seguro) tenga que añadir al uses la unidad jpeg. La libreria JVCL (entre otros 400) tiene varios componentes para lo que quieres y a cada cual mejor.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar