0

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

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]);
}

ss你看,这个循环没有什么异常

4

1 回答 1

1

尝试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

你看到了什么?

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

于 2012-01-26T21:04:08.143 回答