Carregar Imagem do BD no Delphi Xe7 em Alguns Celulares Android

15/01/2016

6

Pessoal estou enfrentando um problema bem estranho... tenho a seguinte função para ler uma imagem do banco de dados..

procedure TFrmMenu.RefreshImage(Field: TField; Img: TImage);
var
vStream : TMemoryStream;
vBitmap : TBitmap;
begin
{ Verifica se o campo esta vazio. }
if not Field.IsNull then
begin
try
vStream := TMemoryStream.Create;
vBitmap := TBitmap.Create;

{ Trata o campo como do tipo BLOB e salva o seu conteudo na memória. }
TBlobField(Field).SaveToStream(vStream);

{ Ajusta a posicao inicial de leitura da memória }
vStream.Position := 0;
vStream.Seek(0, soFromBeginning);
{ Carrega da memoria os dados, para uma estrutura do tipo TJPEG
(A partir da posicao 0)}
vBitmap.LoadFromStream(vStream);

{ Exibe o jpg no Timage. }
img.Bitmap.Assign(vBitmap);

finally
{ Libera a memoria utilizada pelos componentes de conversão }
vBitmap.Free;
vStream.Free;
end;

end;
end;

o Problema é que no meu celular Samsumg funciona perfeitamente a função, no Celular Moto X2 de um rapaz que trabalha aqui comigo ocorre um erro da class timage quando chegamos na linha vBitmap.LoadFromStream(vStream);

Vi que algumas pessoas tiveram um problema similar ao inserir imagem no BD, mas realmente no meu caso o problema é esporádico e só ocorre em alguns modelos de celular com Android, compilando para windows e outros modelos de celular funciona normalmente.. alguém pode ajudar???
Responder