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

Я пытаюсь заменить Picasso в приложении для Android с помощью Fresco. Однако я не уверен, как просто загрузить растровое изображение с помощью Fresco.

С Пикассо я бы просто сделал следующее.

Bitmap poster = Picasso.with(getActivity()) .load(url) .resize(Utils.convertDpToPixel(WIDTH,HEIGHT)) .centerCrop() .get(); 

Мне не удалось выяснить, как создать растровое изображение с этой фреской. Есть идеи?

Как сказал Фреско:

Если ваш запрос на конвейер для декодированного изображения – Android Bitmap, вы можете воспользоваться нашим более простым в использовании BaseBitmapDataSubscriber:

 dataSource.subscribe(new BaseBitmapDataSubscriber() { @Override public void onNewResultImpl(@Nullable Bitmap bitmap) { // You can use the bitmap in only limited ways // No need to do any cleanup. } @Override public void onFailureImpl(DataSource dataSource) { // No cleanup required here. } }, executor); 

Вы не можете назначить битмап любой переменной, не входящей в метод onNewResultImpl.

http://frescolib.org/docs/datasources-datasubscribers.html#_

Мой код:

 public void setDataSubscriber(Context context, Uri uri, int width, int height){ DataSubscriber dataSubscriber = new BaseDataSubscriber<CloseableReference<CloseableBitmap>>() { @Override public void onNewResultImpl( DataSource<CloseableReference<CloseableBitmap>> dataSource) { if (!dataSource.isFinished()) { return; } CloseableReference<CloseableBitmap> imageReference = dataSource.getResult(); if (imageReference != null) { final CloseableReference<CloseableBitmap> closeableReference = imageReference.clone(); try { CloseableBitmap closeableBitmap = closeableReference.get(); Bitmap bitmap = closeableBitmap.getUnderlyingBitmap(); if(bitmap != null && !bitmap.isRecycled()) { //you can use bitmap here } } finally { imageReference.close(); closeableReference.close(); } } } @Override public void onFailureImpl(DataSource dataSource) { Throwable throwable = dataSource.getFailureCause(); // handle failure } }; getBitmap(context, uri, width, height, dataSubscriber); } /** * * @param context * @param uri * @param width * @param height * @param dataSubscriber */ public void getBitmap(Context context, Uri uri, int width, int height, DataSubscriber dataSubscriber){ ImagePipeline imagePipeline = Fresco.getImagePipeline(); ImageRequestBuilder builder = ImageRequestBuilder.newBuilderWithSource(uri); if(width > 0 && height > 0){ builder.setResizeOptions(new ResizeOptions(width, height)); } ImageRequest request = builder.build(); DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(request, context); dataSource.subscribe(dataSubscriber, UiThreadExecutorService.getInstance()); } 

Вы непосредственно используете конвейер изображения Fresco:

http://frescolib.org/docs/using-image-pipeline.html

Хотя, если вы не возражаете, я спрашиваю, что здесь мотивация? Зачем вам нужен Bitmap?

Intereting Posts
INSTALL_FAILED_NO_MATCHING_ABIS на GenyMotion Показывает, что «ваше устройство несовместимо с этой версией» для моего платного приложения на Nexus 7 Как получить размер данных, полученных через EXTRA_STREAM, в приложении, обрабатывающем намерение отправить действие? Группировка данных на ExpandableListView Каков наилучший способ сериализации изображения (совместимого с Swing) с Java на Android? Импорт проекта android в Intellij IDEA / использование общих ресурсов Как сохранить экземпляр фрагмента фрагмента, воспроизводящего видео после изменения ориентации? Запуск события карты (например, щелчка маркера) в картах Google Android V2 Android Modeless Popupwindow Можно ли запустить навигационное приложение с веб-страницы на Android? Как диспетчеры задач убивают приложения? Связь Bluetooth в потоке или служба на Android? Анимация панели инструментов с помощью LayoutTransition Усовершенствования реализации WakefulIntentService Конфигурация сети эмулятора Android