Ler campo Blob no Delphi 2010

13/11/2009

19

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
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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar