studio library img imagen glide from example desde cargar android url image drawable

library - img url android



Imágenes extraíbles de Android desde la URL (5)

Actualmente estoy usando la siguiente pieza de código para cargar imágenes como objetos dibujables de una URL.

Drawable drawable_from_url(String url, String src_name) throws java.net.MalformedURLException, java.io.IOException { return Drawable.createFromStream(((java.io.InputStream)new java.net.URL(url).getContent()), src_name); }

Este código funciona exactamente como se desea, pero parece que hay problemas de compatibilidad con él. En la versión 1.5, arroja una FileNotFoundException cuando le doy una URL. En 2.2, dada la misma URL, funciona bien. La siguiente URL es una entrada de muestra. Estoy dando esta función.

http://bks6.books.google.com/books?id=aH7BPTrwNXUC&printsec=frontcover&img=1&zoom=5&edge=curl&sig=ACfU3U2aQRnAX2o2ny2xFC1GmVn22almpg

¿Cómo cargaría las imágenes de una manera que sea compatible en general desde una URL?


Bitmap no es Drawable. Si realmente necesita un Drawable, haga esto:

public static Drawable drawableFromUrl(String url) throws IOException { Bitmap x; HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); connection.connect(); InputStream input = connection.getInputStream(); x = BitmapFactory.decodeStream(input); return new BitmapDrawable(x); }

(Utilicé la sugerencia que se encuentra en https://.com/a/2416360/450148 )


El siguiente código funciona para mí:

Matrix Mat = new Matrix(); Bitmap Source = BitmapFactory.decodeFile("ItemImagePath"); Bitmap Destination = Bitmap.createScaledBitmap( Source, 320, 320, true ); Source = Bitmap.createBitmap( Destination, 0, 0, Destination.getWidth(), Destination.getHeight(),Mat, true ); ItemImageView.setImageBitmap(Source);


Lo resolví yo mismo. Lo cargué como un mapa de bits usando el siguiente código.

Bitmap drawable_from_url(String url) throws java.net.MalformedURLException, java.io.IOException { HttpURLConnection connection = (HttpURLConnection)new URL(url) .openConnection(); connection.setRequestProperty("User-agent","Mozilla/4.0"); connection.connect(); InputStream input = connection.getInputStream(); return BitmapFactory.decodeStream(input); }

También fue importante agregar el agente de usuario, ya que googlebooks niega el acceso si está ausente.



Puede usar com.androidquery.AndroidQuery para hacer esto de manera bastante simple. Por ejemplo:

AQuery aq = new AQuery(this); aq.id(view).image("http://yourserver/yourimage.png", true, true, 300, new BitmapAjaxCallback() { @Override public void callback(String url, ImageView imageView, Bitmap bitmap, AjaxStatus status) { Drawable drawable = new BitmapDrawable(getResources(), bm); } });

Si usa BitmapAjaxCallback obtendrá acceso al BitMap que puede envolver como un BitmapDrawable.