2

画像ファイルの場所とファイル名を提供するデータベースをオンラインで持っています

Android画面でイメージビューを更新しようとしています。画像と私が試したことを取得するコードは次のとおりです。

// 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

Web に保存されている画像のビットマップを取得する場合は、このようなことができます。私は個人的に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 に答える