如何从下载的png中设置android imageview

时间:2012-10-12 19:16:37

标签: android png imageview

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

我正在尝试更新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));

1 个答案:

答案 0 :(得分: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; 
        }