[英]Show image in TImage dynamically (at run time) without opendialog in c++ builder xe8
[英]C++ Builder TImage Load From URL
在弄清楚如何将图像从URL加载到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应用程序。
非常感谢
艾耶
问题不在于您显示的代码。 TMemoryStream
随着数据的写入而动态增长,并且TIdHTTP::Get()
将写入服务器实际发送的任何数据。 您显示的代码语法很好。
如果从Get()
“ IOHandler值无效”错误,则表示正在请求HTTPS URL,但未将TIdSSLIOHandlerSocketBase
派生的组件(例如TIdSSLIOHandlerSocketOpenSSL
)分配给TIdHTTP::IOHandler
属性以处理SSL。 / TLS加密。 您的代码正在请求HTTP URL,因此服务器可能会发送重定向响应,以告知TIdHTTP
来请求HTTPS URL(请检查TIdHTTP::OnRedirect
事件以进行验证)。 您需要分配一个SSL IOHandler才能处理HTTPS URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.