PDA

Ver la Versión Completa : Imagen JPG en una base de datos Access


edus1984
24-04-2007, 20:28:09
Hola a todos, esta es la primera vez que entro al foro. Quería preguntar si alguien me puede ayudar con esto:

Estoy tratando de mostrar una imagen jpg almacenada como objeto OLE en una bd Access, y me da este número de error: JPEG error #68.

Lo que hago para mostrar la imagen es utilizar un objeto TImage, asignándole un objeto TJpegImage, a partir de un flujo de un campo de una tabla (que contiene la imagen). Todo esto se hace cuando se presiona un boton. Les paso el código del botón:


procedure TForm1.botonClick(Sender: TObject);
var
flu : TADOBlobStream;
Pic : TJpegImage;
begin
flu := TADOBlobStream.Create
(AdoTable1Foto, bmRead);
try
flu.Seek(JpegStartsInBlob(AdoTable1Foto),
soFromBeginning); //Esta función busca el inicio de la imagen
Pic:=TJpegImage.Create;
try
Pic.LoadFromStream(flu); //Es aquí donde da el error
ADOImage.Picture.Graphic:=Pic;
finally
Pic.Free;
end;
finally
flu.Free
end;
end;


También les paso el código de la función de búsqueda:


function JpegStartsInBlob
(PicField:TBlobField):integer;
var
flu : TADOBlobStream;
buffer : Word;
hx : string;
begin
Result := -1;
flu := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and
(flu.Position + 1 < flu.Size) do
begin
flu.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'FF' then begin
flu.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'D8' then Result := flu.Position - 2
else if hx = 'FF' then
flu.Position := flu.Position-1;
end; //if
end; //while
finally
flu.Free
end; //try
end;


Desde ya muchas gracias por su respuesta. Saludos..

Caral
24-04-2007, 20:55:57
Hola
Uso access e incluyo jpg sin problemas en un campo memo, sin tanta complicacion, ni funciones, ni campos raros, ni nada.
Para traer un jpg creado desde un archivo independiente a access tambien se puede con un memo.
Saludos

Delfino
25-04-2007, 00:43:59
y me da este número de error: JPEG error #68.
Este tema se ha tratado bastantes veces antes, si te molestas un poco en buscar encontraras la respuesta..

edus1984
25-04-2007, 07:15:10
He buscado en los foros, pero no doy con ningun tema donde se mencione el error #68 de la unidad Jpeg. No quiero ser molesto pero.. ¿alguien sabe de que se trata este error? o ¿donde puedo encontrar una referencia de estos errores para saber que hago mal en el código? El problema sale cuando se ejecuta la instrucción Pic.LoadFromStream(flu), y no entiendo por que, si el flujo tendría que ser correcto:confused: . Seguramente hay algo que no estoy observando, pero no se que es. Por favor ayudenme:(

Muchas gracias por su tiempo nuevamente, y me parece bárbaro este sitio, ya que enseguida tuve una respuesta. Saludos..

casacham
25-04-2007, 21:29:14
Hola querido
Mira, lo mas probable es que no hayas buscado, porque no hace mas de cuatro semanas volvimos a solucionar el problema una vez mas. Aqui abajo te tiro el link del hilo donde esta la respuesta a tus problemas. Basicamente tenes que leer el Boletin Pascal N° 11. No se que es lo que quieres intentar con ese codigo y complicarte la existencia de esa forma. Haceme caso y lee el hilo que te indico aqui y despues buscas el boletin pascal n°11 cuyo link esta en ese hilo. Contanos como te fue y si sos nuevo lee bien la guia de estilo.


http://www.clubdelphi.com/foros/showthread.php?t=41768

Adios

edus1984
26-04-2007, 07:13:01
Gracias por la ayuda. Espero poder ayudarles en algo alguna vez.

Delfino
06-05-2007, 16:50:19
Aqui (http://delphi.about.com/od/database/l/aa030601b.htm) hay una solucion mejor,
por cierto esta solucion la posteo por segunda o por tercera vez :( ..

casacham
08-05-2007, 01:52:10
Hola Delfino
Estuve leyendo la solución que propusiste para el tema imagenes. Te voy a explicar porque prepiero la solución del Boletin Pascal N° 11. En este se explica como hacer un bloque de código que sirva para manipular cualquier tipo de gráfico. Es decir poder postearlo en la base de datos y luego recuperarlo para enseñarlo. La diferencia con el articulo que nos propones es que solo tiene respuestas para extensiones jpg. De todas formas, no debe ser descartado por quien lea esto, ya que explica muy bien en sus 5 secciones todo lo que ocurre cuando se esta trabajando y eso es muy valido. Gracias por tu aporte