如何在Android上显示来自URL的图片

我想在屏幕上显示图像。 图片应该来自URL,而不是可绘制的。

代码在这里:

<ImageView android:id="@+id/ImageView01" android:src = "http://l.yimg.com/a/i/us/we/52/21.gif" android:layout_width="wrap_content" android:layout_height="wrap_content"></ImageView> 

但是在编译时会出错。

如何在Android中显示来自url的图片?

您可以直接显示来自networking的图像而无需下载。 请检查下面的function。 它会显示从networking的图像到您的图像视图。

 public static Drawable LoadImageFromWebOperations(String url) { try { InputStream is = (InputStream) new URL(url).getContent(); Drawable d = Drawable.createFromStream(is, "src name"); return d; } catch (Exception e) { return null; } } 

然后使用您的活动中的代码将图像设置为imageview。

你可以尝试这个我在另一个问题中find的。

Android,在与ImageView图像相同的URL上制作图像

 try { ImageView i = (ImageView)findViewById(R.id.image); Bitmap bitmap = BitmapFactory.decodeStream((InputStream)new URL(imageUrl).getContent()); i.setImageBitmap(bitmap); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 

我试过这段代码为我工作,直接从url获取图像

  private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { ImageView bmImage; public DownloadImageTask(ImageView bmImage) { this.bmImage = 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.e("Error", e.getMessage()); e.printStackTrace(); } return mIcon11; } protected void onPostExecute(Bitmap result) { bmImage.setImageBitmap(result); } } 

在onCreate()方法中使用

新的DownloadImageTask((ImageView)findViewById(R.id.image)).execute(“ http://scoopak.com/wp-content/uploads/2013/06/free-hd-natural-wallpapers-download-for-pc .jpg “);

举个简单的例子,
http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

你将不得不使用httpClient并下载图像(如果需要,caching它),

解决scheme提供了在列表视图中显示图像,本质上是相同的代码(检查从url设置imageview的代码)进行显示。

在ListView中延迟加载图像

我重试了一个URL的图像,并使用下面的代码存储在我的SD卡上:

 public String Downloadfromurl(String Url) { String filepath=null; try { URL url = new URL(Url); //create the new connection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //set up some things on the connection urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); //and connect! urlConnection.connect(); //set the path where we want to save the file //in this case, going to save it on the root directory of the //sd card. folder = new File(Environment.getExternalStorageDirectory().toString()+"/img"); folder.mkdirs(); //create a new file, specifying the path, and the filename //which we want to save the file as. String filename= "page"+no+".PNG"; file = new File(folder,filename); if(file.createNewFile()) { file.createNewFile(); } //this will be used to write the downloaded data into the file we created FileOutputStream fileOutput = new FileOutputStream(file); //this will be used in reading the data from the internet InputStream inputStream = urlConnection.getInputStream(); //this is the total size of the file int totalSize = urlConnection.getContentLength(); //variable to store total downloaded bytes int downloadedSize = 0; //create a buffer... byte[] buffer = new byte[1024]; int bufferLength = 0; //used to store a temporary size of the buffer //now, read through the input buffer and write the contents to the file while ( (bufferLength = inputStream.read(buffer)) > 0 ) { //add the data in the buffer to the file in the file output stream (the file on the sd card fileOutput.write(buffer, 0, bufferLength); //add up the size so we know how much is downloaded downloadedSize += bufferLength; //this is where you would do something to report the prgress, like this maybe Log.i("Progress:","downloadedSize:"+downloadedSize+"totalSize:"+ totalSize) ; } //close the output stream when done fileOutput.close(); if(downloadedSize==totalSize) filepath=file.getPath(); //catch some possible errors... } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { filepath=null; e.printStackTrace(); } Log.i("filepath:"," "+filepath) ; return filepath; } 

你可以试试毕加索,这真的很好,很容易。 不要忘记在清单中添加权限。

 Picasso.with(context) .load("http://ImageURL") .resize(width,height) .into(imageView ); 

你也可以看看这里的教程: Youtube / Github

 InputStream URLcontent = (InputStream) new URL(url).getContent(); Drawable image = Drawable.createFromStream(URLcontent, "your source link"); 

这已经为我工作

使用ASyncTask编写代码进行http处理。

 Bitmap b; ImageView img; ...... try { URL url = new URL("http://10.119.120.10:80/img.jpg"); InputStream is = new BufferedInputStream(url.openStream()); b = BitmapFactory.decodeStream(is); } catch(Exception e){} ...... img.setImageBitmap(b); 

我有同样的问题。 我testing这个代码,运行良好。 这段代码从URL获取图像并放入 – “bmpImage”

 URL url = new URL("http://your URL"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setReadTimeout(60000 /* milliseconds */); conn.setConnectTimeout(65000 /* milliseconds */); conn.setRequestMethod("GET"); conn.setDoInput(true); conn.connect(); int response = conn.getResponseCode(); //Log.d(TAG, "The response is: " + response); is = conn.getInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(is); Bitmap bmpImage = BitmapFactory.decodeStream(bufferedInputStream);