Intereting Posts
Использование автозаполнения textview с указанием номера телефона Android NDK Native метод не найдена ошибка Пользовательский макет Android MenuItem Как повысить производительность (первое время загрузки, гладкость прокрутки) GridView, рендеринга многих больших изображений? Google Play Store меняет данные реферера на «com.android.chrome»? Изменение фона значка уведомлений на Lollipop Как сгенерировать отчеты с помощью градиента? Снимите флажки всех флажков в пользовательском ListView Платит ли Google за покупки в приложении? Включить промежуточную прокрутку в NestedScrollView (Android Studio) Как отключить / включить сеть, переключиться на Wi-Fi в эмуляторе Android? Неправильные размеры изображения в android при использовании растрового изображения NoMethodError для стандартного объекта времени выполнения Android Что такое PackageManager.FEATURE_WEBVIEW? Модифицировать многополярность с помощью тела

Образцы изображений Android с URL-адреса

В настоящее время я использую следующий фрагмент кода для загрузки изображений в виде объектов с возможностью рисования из 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); } 

Этот код работает точно так же, как и требовалось, но, похоже, проблемы совместимости с ним. В версии 1.5 он FileNotFoundException когда я даю ему URL. В 2.2, учитывая тот же URL-адрес, он отлично работает. Следующий URL-адрес представляет собой образец ввода, который я предоставляю этой функции.

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

Как я могу загружать изображения таким образом, который совместим по всем направлениям с URL?

Растровое изображение не является Drawable. Если вам действительно нужен Drawable, выполните следующие действия:

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

(Я использовал подсказку, найденную в https://stackoverflow.com/a/2416360/450148 )

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

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

Также важно добавить в пользовательский агент, поскольку googlebooks запрещает доступ, если он отсутствует

Я не уверен, но я думаю, что Drawable.createFromStream () больше предназначен для использования с локальными файлами, а не для загрузки InputStreams. Попробуйте использовать BitmapFactory.decodeStream() , а затем оберните обратный битмап в BitmapDrawable .

Для меня работает следующий код:

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

Вы можете использовать com.androidquery.AndroidQuery, чтобы сделать это довольно просто. Например:

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

Если вы используете BitmapAjaxCallback, вы получите доступ к BitMap, который вы можете обернуть как BitmapDrawable.