PDA

Ver la Versión Completa : Imagenes en Oracle 7


jnbruguer
22-07-2004, 10:08:33
Buenos dias a todos, os agradeceria que me echaseis una mano, porque no consigo solucionar el siguiente tema:

1. Tipo de campos en Oracle 7 para almacenar una imagen jpg.
2. Como la almaceno y recupero desde delphi.

Gracias todos.:rolleyes:

Coco
26-07-2004, 21:00:26
Intenta con un campo blob de oracle.
Para guardarlo puedes probar con el tipo Stream de Delphi.


Aqui te envio la funcion que guarda la imagen, seria mas o menos asi

function guardarImagen( NombreImagen: String;
Data: TStream): Boolean;
var F: TFileStream;
begin
F := TFileStream.Create(nombreImagen, fmCreate);
try
F.CopyFrom(Data, 0 );
Result:= True;
except
Result:= false;
end;
F.Free;
end;

Para instanciarla es:

guardarimagen('nombre.jgp',Query.CreateBlobStream(Query.FieldByName('IMAGEN'), bmRead));

Espero que te sirva.
Saludos.

jachguate
26-07-2004, 21:05:44
En oracle 7, me parece que el tipo adecuado es Long Raw.

Hasta luego.

;)

kavisch
06-07-2005, 16:52:59
tengo un problema similiar, yo guardo la imagen de la siguiente forma pero no se si esta bien..

tabla1.insert;
tabla1.FieldByName('Imagen').LoadFromFile('c:\ruta\imag.jpg',ftmemo);
tabla1.post;

esto me funciona, pero mi problema es cuando quiero mostrar esta imagen en un Timage.. no me da resultado....:confused:

var
bimp : TBitmap;
ms : TMemoryStream;
Begin

Image1.Visible := True;
bimp := TBitmapCreate;
ms := TMemoryStream.Create;
EmployFOTOGRAFIA.SaveToStream(ms);
bimp.LoadFromStream(ms);
Image1.Picture.Assign(bimp);
ms.Free;
bimp.Free;
end;
:confused:


ayudame porfavor..
gracias,

jachguate
06-07-2005, 18:13:17
si la imagen que grabas es un jpeg, por que queres recuperarlo como bmp??

Lo normal sería recuperarlo como jpeg, no te parece?


var
bimp : TjpegImage;
ms : TMemoryStream;
Begin
Image1.Visible := True;
bimp := TjpegImage.Create;
ms := TMemoryStream.Create;
try
EmployFOTOGRAFIA.SaveToStream(ms);
bimp.LoadFromStream(ms);
Image1.Picture.Assign(bimp);
finally
ms.Free;
bimp.Free;
end;
end;


A tu código le he añadido una clausula try/except para garantizar que se libere siempre la memoria, y además lo he publicado con la etiqueta delphi que debieras usar para publicar trozos de código... ¿notas la diferencia?.

Saludos.

kavisch
07-07-2005, 18:00:10
hola,

lo he hecho mo me dijiste, pero ahora el erro que me desplega es:
JPEG Error #42.....

quiero Preguntarte algo..
si yo guardo la imagen como bmp en mi DB, seria posible recuperarla y mostrarla en el TImage:confused: ?..

Gracias,

jachguate
07-07-2005, 19:16:07
Si es posible almacenarlas en bmp, y también es posible almacenarlas en jpeg.

Según un par de resultados de mi búsqueda, aparentemente el error #42 es por razones de memoria... te recomiendo investigar y probar también por ese lado.

Hasta luego.

;)