C ++ Builder TImage从URL加载

时间:2015-04-03 00:04:06

标签: android c++ ios c++builder timage

无法弄清楚如何将图片从网址加载到TImage控件中。

从广义上讲,这就是我需要做的事情

   TMemoryStream *str = new TMemoryStream;
   http->Get("http://myurl.mydomain.com/myimage.jpg", str);

问题似乎是str没有分配空间。我收到“无效的IO句柄错误”。

我无法预先知道图像的大小。

我该怎么办呢?我试图通过创建一个虚拟文件并将该文件加载到TMemoryStream中来为TMemoryStream分配10MB的空间,但这也会引发“无效的IO处理程序”错误。

在RAD Studio XE7上使用C ++ Builder开发iOS和Android应用程序。

非常感谢

艾尔

1 个答案:

答案 0 :(得分:0)

问题不在于您显示的代码。 TMemoryStream在数据写入其中时动态增长,TIdHTTP::Get()将写入服务器实际发送的任何数据。您显示的代码语法很好。

如果你得到一个" IOHandler值无效"来自Get()的错误,表示正在请求 HTTPS 网址,但TIdSSLIOHandlerSocketBase派生的组件(例如TIdSSLIOHandlerSocketOpenSSL)未分配给{{1处理SSL / TLS加密的属性。您的代码正在请求 HTTP 网址,因此服务器可能会发送重定向回复以告知TIdHTTP::IOHandler申请 HTTPS 网址(请检查{{1要验证的事件)。您需要分配SSL IOHandler才能处理HTTPS网址。