【发布时间】:2021-08-17 16:25:24
【问题描述】:
我想从网络加载 png 图像,但使用下面的代码,并非所有图像都能正确进入流(在 web 浏览器中发布 url 时,例如 edge,确实给出了正确的图像)。例如,代码中的第一个 url 给出了加载位图失败的错误(在流中 FSize 只有 14?),而第二个 url 没有给出问题。有谁知道如何正确下载第一个网址?
为了让这段代码工作,一个 TButton 和一个 TImage 被放在一个表单上。
System.Net.HttpClientComponent 被添加到使用中。我正在使用德尔福 10.3.3。调频。
谢谢, 杰拉德
procedure TForm1.Button1Click(Sender: TObject);
var ms: TmemoryStream;
httpCli: TNetHTTPClient;
url: string;
begin
httpCli := TNetHTTPClient.Create(nil);
ms := TMemoryStream.Create();
url := 'https://a.tile.openstreetmap.org/11/1050/674.png';
// url := 'https://upload.wikimedia.org/wikipedia/commons/d/d5/Japan_small_icon.png';
httpCli.Get(url,ms);
ms.Position := 0;
Image1.Bitmap.LoadFromStream(ms);
ms.free;
httpCli.free;
end;
【问题讨论】:
-
你说有一些数据被加载到第一个url的流中,如果它不是一个有效的图像那么它到底是什么数据?
-
这是一个有效的图像,可以通过在浏览器中复制 url 来查看。
-
14 字节可能不足以生成有效图像。字节实际上是什么样的?
-
问题是服务器阻塞了用户代理。有关详细信息,请参阅here。
标签: delphi firemonkey