2

我有一个在线数据库,提供图像文件位置和文件名

我正在尝试更新 android 屏幕中的 imageview。这是我获取图像的代码和我尝试过的东西:

// successfully received product details
JSONArray productObj = json.getJSONArray("product"); // JSON Array

// get first product object from JSON Array
JSONObject product = productObj.getJSONObject(0);

// product with this pid found
// imageview
imageVw = (ImageView) findViewById(R.id.imageView1);

// display data in imageview
//imageStr = "http://somesite.com/images/" + product.getString("imagefile");
imageStr = "file://somesite.com/images/" + product.getString("imagefile");

//imgUri=Uri.parse("file:///data/data/MYFOLDER/myimage.png");
//imgUri=Uri.parse(imageStr);
//imageVw.setImageURI(imgUri);
imageVw.setImageBitmap(BitmapFactory.decodeFile(imageStr));
4

1 回答 1

2

如果你想获取存储在网络上的图像的位图,你可以这样做。我个人使用名为ImageDownloader的库。该库易于使用。

您必须了解“URL 是 URI,但 URI 不是 URL。URL 是 URI 的一种特殊化,它定义了给定资源的特定表示的网络位置。” 因此,如果您的文件位置是 http,那么您需要执行如下所示的函数来获取位图。我使用 ImageDownloader 库,因为它运行自己的线程并且还管理一些缓存以更快地下载图像。

  private Bitmap getImageBitmap(String url) { 
            Bitmap bm = null; 
            try { 
                URL aURL = new URL(url); 
                URLConnection conn = aURL.openConnection(); 
                conn.connect(); 
                InputStream is = conn.getInputStream(); 
                BufferedInputStream bis = new BufferedInputStream(is); 
                bm = BitmapFactory.decodeStream(bis); 
                bis.close(); 
                is.close(); 
           } catch (IOException e) { 
               Log.e(TAG, "Error getting bitmap", e); 
           } 
           return bm; 
        } 
于 2012-10-12T19:26:28.827 回答