【发布时间】:2015-11-28 08:25:12
【问题描述】:
试图将远程 PNG 文件分配给 TImage。我试过以下,它说“无效的流格式”。我不知道如何将 PNG 图像下载到 Firemonkey 风格的应用程序(XE8)中:
procedure TfrmMain.Button1Click(Sender: TObject);
var qrString: String;
MS : TMemoryStream;
Png: TImageMultiResBitmap;
begin
MS := TMemoryStream.Create;
Png := TImageMultiResBitmap.Create(Png);
try
IdHTTP1.get('https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=chujisko',MS);
Ms.Seek(0,soFromBeginning);
Png.LoadFromStream(MS);
img1.MultiResBitmap.Assign(Png);
finally
FreeAndNil(Png);
FreeAndNil(MS);
end;
【问题讨论】:
-
您正在下载图像。但是您不能分配 png 或将内容分配给 TImage 是消息。谁告诉你那个网址提供了一个png?将内容保存到文件并使用图像查看器进行检查。
-
确实,您的网址提供了我现在看到的 png 图像。
-
Png := TImageMultiResBitmap.Create(Png);是错误的。您不能将Png指定为其自己的Owner。请改用nil或Self作为所有者。此外,您正在加载单个 PNG,因此无论如何您都不应该使用TImageMultiResBitmap,因为您不处理多分辨率图像。尝试改用img1.Bitmap.LoadFromStream(Ms),完全不要使用img1.MultiResBitmap(除非您打算下载多个不同分辨率的PNG)。 -
嗨,雷米,非常感谢您的建议!我将 TImageMultiResBitmap 转换为 TBitmap,它就像一个魅力!太好了!
标签: android image delphi png firemonkey