Как использовать скольжение для загрузки изображения в растровое изображение?

Скачивание URL-адреса в ImageView очень просто с помощью Glide:

  Glide .with(context) .load(getIntent().getData()) .placeholder(R.drawable.ic_loading) .centerCrop() .into(imageView); 

Мне интересно, могу ли я загрузить в Bitmap ? Я бы хотел загрузить в исходное растровое изображение, которое затем смогу манипулировать с помощью других инструментов. Я прошел через код и не вижу, как это сделать.

Я недостаточно знаком с Glide, но похоже, если вы знаете размер цели, вы можете использовать что-то вроде этого:

 Bitmap theBitmap = Glide. with(this). load("http://...."). asBitmap(). into(100, 100). // Width and height get(); 

Похоже, вы можете передать -1,-1 и получить полноразмерное изображение (чисто основанное на тестах, не может быть документировано).

Примечание into(int,int) возвращает FutureTarget<Bitmap> , поэтому вы должны обернуть это в блок try-catch, охватывающий ExecutionException и InterruptedException . Вот более полный пример реализации, тестирования и работы:

 class SomeActivity extends Activity { private Bitmap theBitmap = null; @Override protected void onCreate(Bundle savedInstanceState) { // onCreate stuff ... final ImageView image = (ImageView) findViewById(R.id.imageView); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... params) { Looper.prepare(); try { theBitmap = Glide. with(SomeActivity.this). load("https://www.google.es/images/srpr/logo11w.png"). asBitmap(). into(-1,-1). get(); } catch (final ExecutionException e) { Log.e(TAG, e.getMessage()); } catch (final InterruptedException e) { Log.e(TAG, e.getMessage()); } return null; } @Override protected void onPostExecute(Void dummy) { if (null != theBitmap) { // The full bitmap should be available here image.setImageBitmap(theBitmap); Log.d(TAG, "Image loaded"); }; } }.execute(); } } 

Следующее предложение Monkeyless в комментарии ниже (и это, как представляется, также является официальным ), вы можете использовать SimpleTarget , необязательно связанный с override(int,int) чтобы значительно упростить код. Однако в этом случае должен быть указан точный размер (все, что ниже 1, не принимается):

 Glide .with(getApplicationContext()) .load("https://www.google.es/images/srpr/logo11w.png") .asBitmap() .into(new SimpleTarget<Bitmap>(100,100) { @Override public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) { image.setImageBitmap(resource); // Possibly runOnUiThread() } }); 

Похоже, что переопределение класса Target или одной из реализаций, таких как BitmapImageViewTarget и переопределение метода setResource для захвата растрового изображения может быть способом …

Это не проверено. 🙂

  Glide.with(context) .load("http://goo.gl/h8qOq7") .asBitmap() .into(new BitmapImageViewTarget(imageView) { @Override protected void setResource(Bitmap resource) { // Do bitmap magic here super.setResource(resource); } }); 

Ну, с последней версией Glide compile 'com.github.bumptech.glide:glide:3.7.0' вам не нужно предоставлять размер или что-то еще, это довольно просто сейчас, как

 Glide.with(this) .load(path) .asBitmap() .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) { imageView.setImageBitmap(resource); } }); 

Это то, что сработало для меня: https://github.com/bumptech/glide/wiki/Custom-targets#overriding-default-behavior

 import com.bumptech.glide.Glide; import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.target.BitmapImageViewTarget; ... Glide.with(yourFragment) .load("yourUrl") .asBitmap() .into(new BitmapImageViewTarget(yourImageView) { @Override public void onResourceReady(Bitmap bitmap, Transition<? super Bitmap> anim) { super.onResourceReady(bitmap, anim); Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { // Here's your generated palette Palette.Swatch swatch = palette.getDarkVibrantSwatch(); int color = palette.getDarkVibrantColor(swatch.getTitleTextColor()); } }); } }); 
Intereting Posts
Управление ресурсами между версией рабочего стола и устройства в libgdx Вызов функции javascript из андроидной активности Каков пользовательский агент Chrome для Android после того, как пользователь переключит его на настольную версию? TBB построен с использованием андроида OpeCV Java.lang.ClassNotFoundException после изменения ничего в проекте, но обновление eclipse android sdk Не доверенный сертификат с использованием ksoap2-android Ошибка DatePicker в Samsung с Android 3.0 Eclipse не создает новый файл Activity и xml layout (проблемы, возникшие после обновления eclipse и sdk) Какой метод вызывается при закрытии приложения Просмотр календаря для Android GingerBread и ранее (API <11) Сброс цвета фона в представлении Правильно ли зарегистрирована CameraInfo.orientation от Android? Неправильно реализовано? Работа менеджера фрагментов Производительность приложения для флеш-карт с помощью Google Analytics? Пример SpannableString с изображением