2017-03-09 73 views
-2

所以,我有這個應用程序連接到一個WebService,我已經從那裏檢索數據,現在我想檢索一個圖像鏈接,並使imageView獲取該圖像通過鏈接。這甚至可能嗎?感謝所有幫助:d如何從webService,Android創建圖像

 @Override 
    protected Void doInBackground(Void... params) { 
     HttpHandler sh = new HttpHandler(); 

     String jsonStr = sh.makeServiceCall(url); 
     Log.e(TAG, "Response from URL: " + jsonStr); 

     if (jsonStr != null) { 
      try { 

       JSONArray array = new JSONArray(jsonStr); 
       for (int i = 0; i < array.length(); i++) { 

        JSONObject jsonObject = array.getJSONObject(i); 

        JSONArray paises = jsonObject.optJSONArray("paises"); 

        if (paises != null) { 
         for (int j = 0; j < paises.length(); j++) { 
          JSONObject jsonObject1 = paises.getJSONObject(j); 
          System.out.println(jsonObject1.optString("Designacao")); 
          String K_PAIS = jsonObject1.getString("K_PAIS"); 
          String Designacao = jsonObject1.getString("Designacao"); 
          String URL_IMAGE_SMALL = jsonObject1.getString("URL_IMAGE_SMALL"); 
          String URL_IMAGEM = "http://something.something.pt" + URL_IMAGE_SMALL; 

          new DownloadImage(imageView6).execute(URL_IMAGEM); 

          HashMap<String, String> pais = new HashMap<>(); 

          pais.put("K_PAIS", K_PAIS); 
          pais.put("Designacao", Designacao); 
          pais.put("URL_IMAGE_SMALL", URL_IMAGE_SMALL); 
          pais.put("URL_IMAGEM", URL_IMAGEM); 
          listaPaises.add(pais); 


         } 
        } 
        System.out.println(jsonObject.optString("Designacao")); 
       } 



      } catch (final JSONException e) { 
       Log.e(TAG, "Json parsing error: " + e.getMessage()); 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         Toast.makeText(getApplicationContext(), "Json parsin error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
        } 
       }); 
      } 
     } else { 
      Log.e(TAG, "Couldn't get json from server."); 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        Toast.makeText(getApplicationContext(), "Couldn't get json from server. Check LogCat for possible errpr!", Toast.LENGTH_LONG).show(); 
       } 
      }); 
     } 
     return null; 



    } 
{...} 
public class DownloadImage extends AsyncTask<String, Void, Bitmap> { 
    ImageView bmImage; 

    public DownloadImage(ImageView bmImage) { 
     this.bmImage = (ImageView) bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.d("Error", e.getStackTrace().toString()); 

     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 
+4

的可能的複製(http://stackoverflow.com/questions/6407324/how-to-display-image- [如何從URL在Android上顯示圖像] from-url-on-android) – H4SN

回答

0

你可以使用任何第三方庫 例如使用Glide

該庫將幫助您從urlImageView獲取和顯示圖像。

例如:

Glide.with(context).load(image_url).into(your_image_view); 

這裏是鏈接該庫:https://github.com/bumptech/glide

1

您可以使用Picasso,一個美妙的圖像庫。

例子:

Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); 

通過搖籃添加依賴:

compile 'com.squareup.picasso:picasso:2.5.2' 
0

你必須設置你的ImageView您的XML裏面平時一樣。然後,您可以使用任何第三方庫,如PicassoGlide,它們會從url加載圖像並將其設置到您的活動/片段中的ImageView。

0

在你的應用的build.gradle添加

compile 'com.github.bumptech.glide:glide:3.7.0' 

使用此代碼從URL加載圖像

Glide.with(getApplicationContext()).load("image_url").into(ImageView); 
0

試試這個,如果你不想使用第三方庫

new DownloadImage(imamgeview).execute(url); 

創建異步任務

public class DownloadImage extends AsyncTask<String, Void, Bitmap> { 
    CircleImageView bmImage; 

    public DownloadImage(ImageView bmImage) { 
     this.bmImage = (CircleImageView) bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.d("Error", e.getStackTrace().toString()); 

     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

我希望你會在你的情況

+0

所以只是爲了澄清,在「新的DownloadImage(imamgeview).execute(url);」 「url」是鏈接保存的變量,對嗎? – alb

+0

是的你是對的.. –

+0

其工作或不在你的情況..........? –

0

第1步工作:執行的AsyncTask

new DownloadImage(imgUserProfile).execute(userProfileUrl); 
:命名DownloadImage

public class DownloadImage extends AsyncTask<String, Void, Bitmap> { 
    CircleImageView bmImage; 

    public DownloadImage(ImageView bmImage) { 
     this.bmImage = (CircleImageView) bmImage; 
    } 

    protected Bitmap doInBackground(String... urls) { 
     String urldisplay = urls[0]; 
     Bitmap mIcon11 = null; 
     try { 
      InputStream in = new java.net.URL(urldisplay).openStream(); 
      mIcon11 = BitmapFactory.decodeStream(in); 
     } catch (Exception e) { 
      Log.d("Error", e.getStackTrace().toString()); 

     } 
     return mIcon11; 
    } 

    protected void onPostExecute(Bitmap result) { 
     bmImage.setImageBitmap(result); 
    } 
} 

步驟2創建類

** Json的網址是這樣的:** https://graph.facebook.com/1220130444748799/picture?height=400&width=400&migration_overrides=%7Boctober_2012%3Atrue%7D

+0

尼斯親愛的@ ND1010 –