Jump to content


Photo

Nuevo procedimiento para leer JPEG o BitMap sin segunda columna o descifrar bits


  • Please log in to reply
1 reply to this topic

#1 Gil47

Gil47

    Newbie

  • Miembros
  • Pip
  • 8 posts

Posted 23 July 2012 - 04:15 AM

Amigos,

Aqui les dejo este desarrollo original de hace un par de dias, con el que se evita el tener una segunda columna para indicar el tipo de imagen guardada en una columna tipo Blob, y sin tener que descifrar el dato Blob escudriñandolo, para ver si es JPEG o Bitmap, y mostrar la imagen en un componente TImage.

Esto solo es para mostrar la imagen en dicho componente, pues de sobra se sabe que el guardado de la imagen en columna tipo Blob, es asunto trillado, y se hace usualmente mediante Image1.Picture.LoadFromFile(dlgOpenPicture.FileName). Pero realmente es irrelevante de como se archivo el dato Blob, siempre que no este fuera de lo convencional.

El asunto de este nuevo procedimiento es, pues,  MOSTRAR la imagen en un componente TImage, irrespectivamente de si sea tipo .bmp o tipo JPEG.

Obvio les sera, que este procedimiento se puede facilmente ampliar si en la aplicacion se desea archivar otro tipo mas de imagen.

Sin embargo, el tipo JPEG y el Bitmap son los mas comunes. Si se desea archivar otro tipo de imagen, ya se sabe que hay varias utilerias para convertir imagenes a JPEG o a Bitmap, cuando aun son archivos. Hay utilerias que hacen la conversion al nivel Folder, inclusive.

Este es el codigo:



delphi
  1. // var
  2. //  BlobField: TField;
  3. //  BS: TStream;
  4.  
  5.   with SQLQuery1 do
  6.     begin
  7.       BlobField := FieldByName('Pic'); {'Pic'  es el nombre de la column Blob con las fotos}
  8.       BS := CreateBlobStream(BlobField,bmRead);
  9.       Image1.Picture.Graphic:= TJpegImage.Create; {se asume sea JPEG}
  10.     Try
  11.       Image1.Picture.Graphic.LoadFromStream(BS); {error si no es JPEG}
  12.       Except {repetir pasos para BitMap}
  13.         BS.Free;
  14.         Image1.Picture.Graphic:= nil; {vaciarla}
  15.         BlobField := FieldByName('Pic'); {'Pic' es el nombre de la column Blob con las fotos}
  16.         BS := CreateBlobStream(BlobField,bmRead);
  17.         Image1.Picture.Graphic:= TBitMap.Create; {bitmap}
  18.         Image1.Picture.Graphic.LoadFromStream(BS);
  19.       end; {Try}
  20.       BS.Free;
  21.     end; {with SQLQuery}



Espero lo encuentren util y facil de aplicar.
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7419 posts
  • LocationRepública Dominicana

Posted 23 July 2012 - 07:09 AM

Muchas gracias por el aporte (y)
  • 0




IP.Board spam blocked by CleanTalk.