URL 图像不会设置为 ImageView Android

Posted

技术标签:

【中文标题】URL 图像不会设置为 ImageView Android【英文标题】:URL image will not set to 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);

    


【问题讨论】:

【参考方案1】:

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

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

【讨论】:

@Naz141:你的服务器上设置 SSL 了吗? 当我在网络浏览器中运行这个 url 时,会弹出一个窗口来从 url 下载图像。它不会在浏览器中显示图像 @Naz141: ***.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 库非常简单有效:

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

    compile 'com.squareup.picasso:picasso:2.5.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 个不同链接

以上是关于URL 图像不会设置为 ImageView Android的主要内容,如果未能解决你的问题,请参考以下文章

使用URL设置ImageView

ImageView 上的透明背景 EditText 不会显示光标

ImageView 加载本地图像,但不从 URL

如何从 Imageview 设置通知图标

动态设置图像视图的边距

使用 SDWebImage 处理超大图像的下载