2017-03-09 40 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 –