Carregar Imagem do BD no Delphi Xe7 em Alguns Celulares Android
15/01/2016
0
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???
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???
André Macedo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)