FireMonkey iOS RAD Studio XE2 - отображение изображения в форме, загруженной с URL
Можно ли поместить TImage в форму FMX для iOS и загрузить изображение (jpg) с URL-адреса в этот TImage для отображения в приложении iOS?
Я пытался без успеха. Любые советы или указания в правильном направлении приветствуются.
2 ответа
Перетащите TButton, TImageControl и TIdHttp в форму Firemonkey, и этот код выведет изображение из Интернета:
procedure TForm1.btnReadWebImgClick(Sender: TObject);
begin
ReadWebImage('http://www.gravatar.com/avatar/5af5f8c5f88c6c237745e9472a31410f?s=32&d=identicon&r=PG');
end;
procedure TForm1.ReadWebImage(imgAddress: string);
var
memStream: TMemoryStream;
begin
memStream := TMemoryStream.Create;
try
idhttp1.Get (imgAddress,memStream);
except
ShowMessage('Image not found at:'+imgAddress);
memStream.Free;
exit;
end;
try
memStream.Position := 0;
ImageControl1.Bitmap.LoadFromStream(memStream);
finally
memStream.Free;
end;
end;
Ответ работает с небольшим замораживанием. Я загружаю 4 изображения в цикле. Когда я нажимаю на кнопку, программа останавливает загрузку изображений, индикатор выполнения не работает, и если они загружаются, продолжаются отлично. Для 4 изображений стоп-кадр на 1 сек. Для 50 это "нет связи" или "плохая программа". Это код.
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
i: Integer;
Stream: TMemoryStream;
imgAddress: string;
begin
ProgressBar1.Min := 0;
ProgressBar1.Max := Table1.RecordCount;
for i := 1 to Table1.RecordCount do
begin
ProgressBar1.Value := i;
imgAddress := VirtualTable1.FieldByName('flyer').AsString;
Stream := TMemoryStream.Create;
idhttp1.Get (imgAddress,Stream);
try
Stream.Position := 0;
Table1.Edit;
TBlobField(Table1.FieldByName('image')).LoadFromStream(Stream);
Table1.Post;
finally
Stream.Free;
end;
Table1.Next;
end;
Table1.First;
end;