Uso de Fresco de Facebook para cargar un mapa de bits

Estoy tratando de reemplazar a Picasso en mi aplicación Android con Fresco. Sin embargo, no estoy seguro de cómo simplemente cargar un mapa de bits utilizando Fresco.

Con Picasso sólo haría lo siguiente.

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

He sido incapaz de averiguar cómo crear un mapa de bits con este Fresco. ¿Algunas ideas?

2 Solutions collect form web for “Uso de Fresco de Facebook para cargar un mapa de bits”

Como dijo Fresco:

Si su solicitud a la tubería es para una imagen decodificada, un mapa de bits de Android, puede aprovechar nuestro BaseBitmapDataSubscriber, más fácil de usar:

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

No puede asignar el mapa de bits a ninguna variable que no esté en el ámbito del método onNewResultImpl.

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

Mi código :

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

Usted utilizaría la tubería de la imagen de Fresco directamente para esto:

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

Aunque si no te importa mi pregunta – ¿cuál es la motivación aquí? ¿Por qué necesita el mapa de bits en sí?

  • Problemas con la recolección de basura y Picasso
  • Aplicación de Android se bloquea para algunos usuarios al aplicar la transformación con Picasso
  • Cómo cargar imágenes de una tarjeta SD con la biblioteca de Picasso
  • Progreso de la demostración al descargar la imagen del servidor a la vista de la imagen
  • Zoom de TouchImageView ajustado a fotograma con Picasso
  • Cómo obtener ImageView negro utilizando Picasso y Glide
  • Android: cargar archivo svg desde la web y mostrarlo en la vista de imagen
  • Cómo cargar diseño de fondo utilizando Picasso
  • Picasso: fuera de la memoria
  • ¿Está bien crear una nueva instancia de picasso cada vez
  • ¿Podría ocultar la barra de progreso después de cargar la imagen en picasso?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.