【问题标题】:URL image will not set to ImageView AndroidURL 图像不会设置为 ImageView Android
【发布时间】:2016-02-03 16:12:38
【问题描述】:

我正在尝试将图像从 url 加载到我的 android ImageView。但它没有为我的网址提供任何图像。但是当我调用另一个示例 url 时,它会在 ImageView 上加载

我的网址为空

https://192.168.100.15/HeyVoteWeb/Home/GetImage/d9cbd32c-47fc-4644-ab97-1f525c96e9ed/100000102

此示例网址适合我

https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png

这是我正在处理的代码

public class GetImage extends Activity{
ImageView postpic1;
Bitmap b;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.all_posts);
    postpic1 = (ImageView) findViewById(R.id.postpic1);
    information info = new information();
    info.execute("");
}
public class information extends AsyncTask<String, String, String>
{
    @Override
    protected String doInBackground(String... arg0) {
        try
        {
            URL url = new URL("https://localhost/HeyVoteWeb/Home/GetImage/d9cbd32c-47fc-4644-ab97-1f525c96e9ed/100000102");
            InputStream is = new BufferedInputStream(url.openStream());
            b = BitmapFactory.decodeStream(is);
        } catch(Exception e){}
        return null;
    }
    @Override
    protected void onPostExecute(String result) {
        postpic1.setImageBitmap(b);

    }
}
}

【问题讨论】:

    标签: android imageview android-imageview


    【解决方案1】:

    图片的 URL 是 localhost。 localhost(127.0.0.1) 指的是与请求来源相同的机器。因此,您的手机会向自己发送请求。而是指定运行服务器的电脑的 IP 地址。

    PS:确保你的电脑和手机连接到同一个网络。

    【讨论】:

    • @Naz141:你的服务器上设置 SSL 了吗?
    • 当我在网络浏览器中运行这个 url 时,会弹出一个窗口来从 url 下载图像。它不会在浏览器中显示图像
    • @Naz141: stackoverflow.com/questions/4221874/… 进一步了解如何设置它。相反,您可以尝试使用普通的 http 吗?
    • @Naz141:你能在安卓浏览器上看到图片吗?如果不是,请检查您的手机和服务器是否在同一网络上。
    • 是的,我可以在我的手机中看到,并且在浏览器中运行时图像会自动下载
    【解决方案2】:

    我认为您的问题出在您的 URL 中,请将您的 localhost 替换为您的 IP 地址,希望它能解决您的问题。

    【讨论】:

      【解决方案3】:

      只需使用图像加载和缓存库。比如Picasso

      Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView);
      

      替代解决方案是Glide;它有一个相似的工作原理它有一个相似的工作原理:

      Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
      

      【讨论】:

        【解决方案4】:

        您有运行支持 HTTPS 的本地网络服务器吗?因为那是您尝试从中加载图像的位置。

        另外,如果你正在运行,当你在浏览器中调用你想要的 URL 时,你会得到图像吗?

        【讨论】:

        • 这是网址https://192.168.100.15/HeyVoteWeb/Home/GetImage/d9cbd32c-47fc-4644-ab97-1f525c96e9ed/100000102
        • 是的,我看到了。那是对本地 HTTPS 网络服务器的调用,所以你有一个在运行吗?如果没有,则此 URL 将永远不会为您提供图像。这会调用您正在运行它的计算机/设备,而不是互联网上的随机图像(仅用于说明)。
        • 我无法调用此 URL,因为我的计算机上没有正在运行的网络服务器,其目录路径例如C:\xampp\htdocs\HeyVoteWeb\Home\GetImage\d9cbd32c-47fc-4644-ab97-1f525c9‌​6e9ed\100000102 ---- 你从哪里得到这个链接?
        【解决方案5】:

        您是否尝试过使用Picasso 库非常简单有效:

        1. 在 app 目录中找到 build.gradle 并添加到依赖项:

          compile 'com.squareup.picasso:picasso:2.5.2'

        2. 然后使用毕加索库:

          String url = "https://localhost/HeyVoteWeb/Home/GetImage/d9cbd32c-47fc-4644-ab97-1f525c96e9ed/100000102";
          

          Picasso.with(context) //The context of your activity .load(url) .into(postpic1);

        【讨论】:

        • 当我输入下面的 url 时,它不会加载 imageview 是空的。但它适用于所有其他图片网址https://192.168.100.15/HeyVoteWeb/Home/GetImage/d9cbd32c-47fc-4644-ab97-1f525c96e9ed/100000102
        • 我的图片网址在我的浏览器中工作。当我在浏览器中运行 url 时,图像会自动下载
        • @Naz141,那么这就是您应该直接使用指向 img 的链接而不是下载 img 的链接的问题,它们是具有 2 个不同功能的 2 个不同链接
        猜你喜欢
        • 1970-01-01
        • 2013-06-19
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        • 2013-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多