visor studio servidor obtener mostrar manipular imágenes imagenes imagen desde con cargar añadir almacenada agregar android

android - studio - Cargar imagen de url



obtener imagen almacenada en mysql desde android (15)

Tengo una URL de imagen. Quiero mostrar una imagen de esta URL en un ImageView, pero no puedo hacer eso.

¿Cómo se puede lograr esto?


Basado en esta respuesta, escribo mi propio cargador.

Con efecto de carga y efecto de aparición:

import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.util.DisplayMetrics; import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ProgressBar; import java.io.InputStream; /** * Created by Sergey Shustikov ([email protected]) at 2015. */ public class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { public static final int ANIMATION_DURATION = 250; private final ImageView mDestination, mFakeForError; private final String mUrl; private final ProgressBar mProgressBar; private Animation.AnimationListener mOutAnimationListener = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { mProgressBar.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }; private Animation.AnimationListener mInAnimationListener = new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { if (isBitmapSet) mDestination.setVisibility(View.VISIBLE); else mFakeForError.setVisibility(View.VISIBLE); } @Override public void onAnimationEnd(Animation animation) { } @Override public void onAnimationRepeat(Animation animation) { } }; private boolean isBitmapSet; public DownloadImageTask(Context context, ImageView destination, String url) { mDestination = destination; mUrl = url; ViewGroup parent = (ViewGroup) destination.getParent(); mFakeForError = new ImageView(context); destination.setVisibility(View.GONE); FrameLayout layout = new FrameLayout(context); mProgressBar = new ProgressBar(context); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER; mProgressBar.setLayoutParams(params); FrameLayout.LayoutParams copy = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); copy.gravity = Gravity.CENTER; copy.width = dpToPx(48); copy.height = dpToPx(48); mFakeForError.setLayoutParams(copy); mFakeForError.setVisibility(View.GONE); mFakeForError.setImageResource(android.R.drawable.ic_menu_close_clear_cancel); layout.addView(mProgressBar); layout.addView(mFakeForError); mProgressBar.setIndeterminate(true); parent.addView(layout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } protected Bitmap doInBackground(String... urls) { String urlDisplay = mUrl; Bitmap bitmap = null; try { InputStream in = new java.net.URL(urlDisplay).openStream(); bitmap = BitmapFactory.decodeStream(in); } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); } return bitmap; } protected void onPostExecute(Bitmap result) { AlphaAnimation in = new AlphaAnimation(0f, 1f); AlphaAnimation out = new AlphaAnimation(1f, 0f); in.setDuration(ANIMATION_DURATION * 2); out.setDuration(ANIMATION_DURATION); out.setAnimationListener(mOutAnimationListener); in.setAnimationListener(mInAnimationListener); in.setStartOffset(ANIMATION_DURATION); if (result != null) { mDestination.setImageBitmap(result); isBitmapSet = true; mDestination.startAnimation(in); } else { mFakeForError.startAnimation(in); } mProgressBar.startAnimation(out); } public int dpToPx(int dp) { DisplayMetrics displayMetrics = mDestination.getContext().getResources().getDisplayMetrics(); int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); return px; } }

Agregar permiso

<uses-permission android:name="android.permission.INTERNET"/>

Y ejecutar:

new DownloadImageTask(context, imageViewToLoad, urlToImage).execute();


El siguiente código le muestra cómo configurar ImageView desde una cadena url, usando RxAndroid. Primero, agregue la biblioteca RxAndroid 2.0

dependencies { // RxAndroid compile ''io.reactivex.rxjava2:rxandroid:2.0.0'' compile ''io.reactivex.rxjava2:rxjava:2.0.0'' // Utilities compile ''org.apache.commons:commons-lang3:3.5'' }

ahora use setImageFromUrl para establecer la imagen.

public void setImageFromUrl(final ImageView imageView, final String urlString) { Observable.just(urlString) .filter(new Predicate<String>() { @Override public boolean test(String url) throws Exception { return StringUtils.isNotBlank(url); } }) .map(new Function<String, Drawable>() { @Override public Drawable apply(String s) throws Exception { URL url = null; try { url = new URL(s); return Drawable.createFromStream((InputStream) url.getContent(), "profile"); } catch (final IOException ex) { return null; } } }) .filter(new Predicate<Drawable>() { @Override public boolean test(Drawable drawable) throws Exception { return drawable != null; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Drawable>() { @Override public void accept(Drawable drawable) throws Exception { imageView.setImageDrawable(drawable); } }); }


La respuesta aceptada anterior es excelente si está cargando la imagen en función de un clic de botón, sin embargo, si lo hace en una nueva actividad, congelará la IU durante uno o dos segundos. Al mirar a mi alrededor, descubrí que una simple asynctask eliminaba este problema.

Para usar una asynctask para agregar esta clase al final de su actividad:

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

Y llame desde su método onCreate () usando:

new DownloadImageTask((ImageView) findViewById(R.id.imageView1)) .execute(MY_URL_STRING);

No olvides agregar el permiso debajo en tu archivo de manifiesto

<uses-permission android:name="android.permission.INTERNET"/>

Funciona muy bien para mi :)


Mejor método que he intentado en lugar de utilizar cualquier biblioteca

public Bitmap getbmpfromURL(String surl){ try { URL url = new URL(surl); HttpURLConnection urlcon = (HttpURLConnection) url.openConnection(); urlcon.setDoInput(true); urlcon.connect(); InputStream in = urlcon.getInputStream(); Bitmap mIcon = BitmapFactory.decodeStream(in); return mIcon; } catch (Exception e) { Log.e("Error", e.getMessage()); e.printStackTrace(); return null; } }


Para mí, Fresco es el mejor entre las otras bibliotecas.

Simplemente setup Fresco y luego simplemente configura el imageURI así:

draweeView.setImageURI(uri);

Vea this respuesta que explica algunos de los beneficios de Fresco.


Prueba esto:

InputStream input = contentResolver.openInputStream(httpuri); Bitmap b = BitmapFactory.decodeStream(input, null, options);


Pruebe esto agregue el archivo jar de picasso lib

Picasso.with(context) .load(ImageURL) .resize(width,height).noFade().into(imageView);


UrlImageViewHelper llenará un ImageView con una imagen que se encuentra en una URL. UrlImageViewHelper automáticamente descargará, guardará y almacenará en caché todas las URL de imagen de BitmapDrawables. Las URL duplicadas no se cargarán en la memoria dos veces. La memoria de mapa de bits se gestiona utilizando una tabla hash de referencia débil, por lo que tan pronto como la imagen ya no la utilice, se recolectará la basura automáticamente.

UrlImageViewHelper.setUrlDrawable (imageView, "http://example.com/image.png");

github.com/koush/UrlImageViewHelper


agregar permiso de Internet en manifiesto

<uses-permission android:name="android.permission.INTERNET" />

que crear metodo como a continuación,

public static Bitmap getBitmapFromURL(String src) { try { Log.e("src", src); URL url = new URL(src); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); Bitmap myBitmap = BitmapFactory.decodeStream(input); Log.e("Bitmap", "returned"); return myBitmap; } catch (IOException e) { e.printStackTrace(); Log.e("Exception", e.getMessage()); return null; } }

ahora agregue esto en su método onCreate,

ImageView img_add = (ImageView) findViewById(R.id.img_add); img_add.setImageBitmap(getBitmapFromURL("http://www.deepanelango.me/wpcontent/uploads/2017/06/noyyal1.jpg"));

esto es trabajo para mi


prueba picassso agradable y termina en una declaración

Picasso.with(context) .load(ImageURL) .resize(width,height).into(imageView);

tutorial: https://youtu.be/DxRqxsEPc2s


prueba este

public static Void downloadfile(String fileurl,ImageView img) { Bitmap bmImg = null; URL myfileurl =null; try { myfileurl= new URL(fileurl); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn= (HttpURLConnection)myfileurl.openConnection(); conn.setDoInput(true); conn.connect(); int length = conn.getContentLength(); if(length>0) { int[] bitmapData =new int[length]; byte[] bitmapData2 =new byte[length]; InputStream is = conn.getInputStream(); bmImg = BitmapFactory.decodeStream(is); // img.setImageBitmap(bmImg); } else { } } catch(IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }


URL url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464"); Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream()); imageView.setImageBitmap(bmp);


import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.ImageView; import android.widget.Toast; public class imageDownload { Bitmap bmImg; void downloadfile(String fileurl,ImageView img) { URL myfileurl =null; try { myfileurl= new URL(fileurl); } catch (MalformedURLException e) { e.printStackTrace(); } try { HttpURLConnection conn= (HttpURLConnection)myfileurl.openConnection(); conn.setDoInput(true); conn.connect(); int length = conn.getContentLength(); int[] bitmapData =new int[length]; byte[] bitmapData2 =new byte[length]; InputStream is = conn.getInputStream(); BitmapFactory.Options options = new BitmapFactory.Options(); bmImg = BitmapFactory.decodeStream(is,null,options); img.setImageBitmap(bmImg); //dialog.dismiss(); } catch(IOException e) { // TODO Auto-generated catch block e.printStackTrace(); // Toast.makeText(PhotoRating.this, "Connection Problem. Try Again.", Toast.LENGTH_SHORT).show(); } } }

en su actividad tome imageview & set resource imageDownload (url, yourImageview);


loadImage("http://relinjose.com/directory/filename.png");

Aqui tienes

void loadImage(String image_location) { URL imageURL = null; if (image_location != null) { try { imageURL = new URL(image_location); HttpURLConnection connection = (HttpURLConnection) imageURL .openConnection(); connection.setDoInput(true); connection.connect(); InputStream inputStream = connection.getInputStream(); bitmap = BitmapFactory.decodeStream(inputStream);// Convert to bitmap ivdpfirst.setImageBitmap(bitmap); } catch (IOException e) { e.printStackTrace(); } } else { //set any default } }


public class MainActivity extends Activity { Bitmap b; ImageView img; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); img = (ImageView)findViewById(R.id.imageView1); information info = new information(); info.execute(""); } public class information extends AsyncTask<String, String, String> { @Override protected String doInBackground(String... arg0) { 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){} return null; } @Override protected void onPostExecute(String result) { img.setImageBitmap(b); } } }