Ler campo Blob no Delphi 2010

13/11/2009

0

Bom Dia pessoal, estou com problemas ao ler o campo blob de uma determinada tabela no Delphi 2010, ao compilar no Delphi 7 funciona normalmente. Tentei passar o subtipo do campo para 0 e mesmo assim não funcionou. O campo blob, estou utilizando para identificar a digital da leitura biométrica. A gravação da digital faz sem problemas.   Estou utilizando o conector DBExpress e o banco é o Firebird 2.1   Att. Diogo Henrique Contato
Diogo Contato

Diogo Contato

Responder

Posts

13/11/2009

Anderson

O Firebird aceita qualquer coisa (na gravação) em campos do tipo BLOB SubType 0 (ele grava e não reclama).
Mas na leitura o papo é outro pois, o componente que pega os dados deve receber eles já formatados.
Alguns drivers (Devart) fazem automaticamente alguns ajustes no retorno, outros não (e aí da creps).

Exemplo de uma rotina para recuperar a imagem:

.
.
.
Le_Imagem(ClientDataSetClientes,ImageFoto,'FOTO');
.
.
.


Procedure Le_Imagem(ob_cld:TClientDataSet;ob_img:TImage;sc_campo:string);

var
  ob_BlobStream:TClientBlobStream;
  ob_jpg:TJPegImage;

begin
    ob_jpg:=TJPegImage.Create;
    ob_BlobStream:=TClientBlobStream.Create(TBlobField(ob_cld.FieldByName(sc_campo)),bmRead);
    ob_jpg.LoadFromStream(ob_BlobStream);
    ob_img.Picture.Assign(ob_jpg);
    FreeAndNil(ob_BlobStream);
    FreeAndNil(ob_jpg);
end;

Importante:

O campo no arquivo .FDB que contém as fotos deve ser obrigatóriamente do tipo BLOB SubType 0

Trabalhe com apenas um tipo de imagem (jpg por exemplo) ou terá que tratar o retorno de cada tipo com uma
conversão diferente (bmp é um jeito, gif é outro, jpg ...)

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar