Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Leer JPEG o BitMap de campo blob (https://www.clubdelphi.com/foros/showthread.php?t=79617)

ElMug 23-07-2012 12:32:31

Leer JPEG o BitMap de campo blob
 
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:

Código:

// var
//  BlobField: TField;
//  BS: TStream;

  with SQLQuery1 do
    begin
      BlobField := FieldByName('Pic'); {'Pic'  es el nombre de la column Blob con las fotos}
      BS := CreateBlobStream(BlobField,bmRead);
      Image1.Picture.Graphic:= TJpegImage.Create; {se asume sea JPEG}
    Try
      Image1.Picture.Graphic.LoadFromStream(BS); {error si no es JPEG}
      Except {repetir pasos para BitMap}
        BS.Free;
        Image1.Picture.Graphic:= nil; {vaciarla}
        BlobField := FieldByName('Pic'); {'Pic' es el nombre de la column Blob con las fotos}
        BS := CreateBlobStream(BlobField,bmRead);
        Image1.Picture.Graphic:= TBitMap.Create; {bitmap}
        Image1.Picture.Graphic.LoadFromStream(BS);
      end; {Try}
      BS.Free;
    end; {with SQLQuery}

Espero lo encuentren util y facil de entender.

Casimiro Notevi 23-07-2012 13:19:53

Se agradece el aporte, pero un código como ese lo puedes encontrar infinidad de veces en los foros porque es un tema que se ha tratado muchísimas veces.
Además, como usuario nuevo, deberías de leer nuestra guía de estilo, cosa que te he recomendado en otros mensajes y veo que no has hecho.
También te recuerdo que debes poner los mensajes en los foros adecuados, ya que este es el de "conexión con bases de datos", algo de lo que no trata tu mensaje.
Te recuerdo que debes seleccionar el 'tag' adecuado según el tipo de código fuente publicado, en este caso es delphi.
Además he cambiado el título de tu mensaje: "Nuevo procedimiento para leer JPEG o BitMap sin segunda columna ni descibrar bits.", porque ni es nuevo, ni es un procedimiento, ni tiene nada que ver con "segundas columnas" ni "descifrar bits". :confused:



De todas formas, nos agrada de que hayas "descubierto" ese código.
Saludos.

ElMug 24-07-2012 02:34:09

Casimiro,

Podrias indicar en DONDE has visto esta nueva y ventajosa manera de solucionar ESTE problema?

Aparte, si es tu potestad y deseo, mueve el mensaje, o eliminalo.

Yo ya aporte esto con el fin de que a alguien le pueda servir.

Casimiro Notevi 24-07-2012 03:03:39

Cita:

Empezado por ElMug (Mensaje 438006)
Casimiro, Podrias indicar en DONDE has visto esta nueva y ventajosa manera de solucionar ESTE problema?

Si haces una simple búsqueda en los foros encontrarás 82 hilos con ese código, no me ha apetecido leerlos todos, tengo otras cosa que hacer ;)


La franja horaria es GMT +2. Ahora son las 12:20:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi