【问题标题】:How to load PNG files from internal network into Android?如何将 PNG 文件从内部网络加载到 Android 中?
【发布时间】:2016-02-03 19:55:46
【问题描述】:

我已经成功地实现了使用IdHTTP 组件从Delphi 跟随this question 从网络加载图像。

这就是我获取图像的方式:

procedure TForm9.Button1Click(Sender: TObject);
var

    qrString: String;
    MS      : TMemoryStream;
begin
    qrString := 'http://i.dailymail.co.uk/i/pix/2014/04/18/article-2607903-1D2E8FB300000578-90_306x324.jpg';
    MS       := TMemoryStream.Create;
    try
        IdHTTP1.Get(qrString, MS);
        MS.Seek(0, soFromBeginning);
        Image1.Bitmap.LoadFromStream(MS);
    finally
        FreeAndNil(MS);
    end;

end;

但是,我需要从我自己的本地网络加载我的图像,例如:

qrString := 'file://192.168.1.4/Dados/A1.jpg';

我收到以下消息:

未知协议。

我做错了什么?不应该和VCL应用一样吗?

【问题讨论】:

  • 您指定了“文件”的 URI 方案。我不确定 idHTTP 是否处理该方案。如果您在自己的网络上运行网络服务器,则在其中加载图像并使用正确的 URL
  • 不,TIdHTTP 不处理 file:// 网址,仅处理 http://https:// 网址。

标签: android image delphi http


【解决方案1】:

您似乎使用不正确的协议从本地网络请求文件。试试这个:qrString := 'http://192.168.1.4/Dados/A1.jpg'

或者看看 Picasso,这是一个用于处理图像加载的“易于使用”的库:http://square.github.io/picasso/

【讨论】:

  • 重要提示:它必须在开放的网络服务器上运行。例如,如果本地地址请求密码,这将相应地失败。
  • @Holmes,“开放式网络服务器”没有任何普遍意义。如果192.168.1.4 需要身份验证 - 你会以 HTTP 401 错误结束。
  • 如果您将 TIdHTTP 配置为处理身份验证,它会很乐意为您处理。
猜你喜欢
  • 2018-04-13
  • 2014-12-16
  • 1970-01-01
  • 2016-04-05
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多