使用循环从url加载图像



我正在使用以下代码从服务器下载图像:

public Bitmap getBitmap(String path){
    URL url=new URL(path);
    URLConnection connection=url.openConnection();
    connection.setDoInput(true);
    connection.connect();
    InputStream is=connection.getInputStream();
    Bitmap bmp=BitmapFactory.decodeStream(is);
    return bmp;
}

它适用于1个图像,但如果我在循环中使用它,在第二次、第三次等迭代中,它会返回一些奇怪的东西(位图的mWidthmHeight字段是-1问题出在哪里

(第二次、第三次等迭代的path很好,我检查过了)

编辑

循环示例:

//images - is a String array
for(int i=0; i<images.length(); i++){
    Bitmap bmp=getBitmap(images[i]);
}

你可以看到,在这个周期中没有什么异常

在完成一个位图之后,但在加载下一个位图之前,请尝试调用Bitmap.recycle

问题是,即使这样也无济于事——位图无法自行调整大小。

也许,最好制作位图数组——一个永远的路径。

恐怕,由于优化,java机器(或编译器)并没有破坏以前的位图,而是试图重用它。请在这里写下结果。这很有趣。

尝试读取图像的大小而不是读取它们:

    BitmapFactory.Options options = new BitmapFactory.Options();
                options.inJustDecodeBounds = true;
Bitmap btemp = BitmapFactory.decodeFile(selectedImagePath,options);

之后使用下面的代码来获得高度和宽度:

     options.outHeight     for height
      options.outWidth    for width

你看到了什么?

尝试更改路径的顺序-再次仅第一个可以吗?如果没有,问题出在文件中。如果是,则在连接/流/工厂中。

相关内容

  • 没有找到相关文章

最新更新