Как отображать изображение из URL-адреса на Android

Я хочу отображать изображение на экране. Изображение должно поступать из 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> 

Но он дает ошибку во время компиляции.

Как отображать изображение из URL-адреса в Android?

Вы можете напрямую показывать изображение из Интернета, не загружая его. Проверьте приведенную ниже функцию. Он отобразит изображения из Интернета в виде изображения.

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

Затем установите изображение в изображение, используя код в вашей деятельности.

Вы можете попробовать это, которое я найду в другом вопросе.

Android, Сделать изображение по URL-адресу, равному изображению ImageView

 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 и загрузить изображение (при необходимости кэшируйте его),

Решение, предлагаемое для отображения изображений в виде списка, по сути того же кода (проверьте код, в котором изображение отображается с URL-адреса) для отображения.

Ленивая загрузка изображений в 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; } 
 InputStream URLcontent = (InputStream) new URL(url).getContent(); Drawable image = Drawable.createFromStream(URLcontent, "your source link"); 

Это сработало для меня

Вы можете попробовать с Пикассо, это действительно приятно и легко. Не забудьте добавить разрешения в манифест.

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

Вы также можете посмотреть учебник здесь: Youtube / Github

Напишите код, используя 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); 

У меня такая же проблема. Я тестирую этот код и хорошо работаю. Этот код Получите изображение из 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);