How to display image from URL on Android

AndroidImageUrlHttps

Android Problem Overview


I want to display image on screen. Image should come from URL, and not drawable.

Code is here:

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

but it gives error at compile time.

How do I display image from URL in Android?

Android Solutions


Solution 1 - Android

You can directly show image from web without downloading it. Please check the below function . It will show the images from the web into your image view.

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;
	}
}

then set image to imageview using code in your activity.

Solution 2 - Android

I tried this code working for me,get image directly from 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);
	  }
	}

use inside onCreate() method

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

Solution 3 - Android

You can try this which I find in another question.

https://stackoverflow.com/questions/3118691/android-make-an-image-at-a-url-equal-to-imageviews-image

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();
}

Solution 4 - Android

You can try with Picasso, it's really nice and easy. Don't forget to add the permissions in the manifest.

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

You can also take a look at a tutorial here : Youtube / Github

Solution 5 - Android

For simple example,
http://www.helloandroid.com/tutorials/how-download-fileimage-url-your-device

You will have to use httpClient and download the image (cache it if required) ,

solution offered for displaying images in listview, essentially same code(check the code where imageview is set from url) for displaying.

https://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview

Solution 6 - Android

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

this has worked for me

Solution 7 - Android

I retried an image from a URL and stored on my SD-card using the following code:

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;

}

Solution 8 - Android

Write the code using ASyncTask for http handling.

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);

Solution 9 - Android

I've same issue. I test this code and works well. This code Get Image from URL and put in - "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);

Solution 10 - Android

You can simply use the Glide API. It avoids all the boilerplate code and the task can be achieved in two lines of code. You refer this link https://blog.mindorks.com/downloading-and-showing-image-with-glide-library-in-android. Enjoy

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJignesh AnsodariyaView Question on Stackoverflow
Solution 1 - AndroidChiragView Answer on Stackoverflow
Solution 2 - AndroidSatheeshkumar SomuView Answer on Stackoverflow
Solution 3 - AndroidDzMonsterView Answer on Stackoverflow
Solution 4 - Androidr3dm4nView Answer on Stackoverflow
Solution 5 - AndroidsatView Answer on Stackoverflow
Solution 6 - AndroidYiğit Doğuş ÖzçelikView Answer on Stackoverflow
Solution 7 - AndroidGK_View Answer on Stackoverflow
Solution 8 - AndroidRahul RainaView Answer on Stackoverflow
Solution 9 - AndroidAvtandil KavrelishviliView Answer on Stackoverflow
Solution 10 - Androidklaus19View Answer on Stackoverflow