studio sirve que para libreria implement dev dependencia android caching bitmap picasso okhttp

android - sirve - Actualice/cambie el mapa de bits en caché utilizando Picasso y OkHttp



picasso android dev (2)

Intenta usar una transformación picasso .

El flujo de trabajo de picasso es así:

  1. obtener la imagen de la red
  2. almacenar en caché la imagen sin procesar en la memoria / caché
  3. aplicar transformaciones opcionales y almacenar en caché esos resultados también

Entonces, en su caso, necesitaría hacer una transformación personalizada que altere su mapa de bits. La segunda vez que solicite el mapa de bits con esta transformación específica, se cargará desde la memoria caché.

public class YourTransformation implements com.squareup.picasso.Transformation { @Override public Bitmap transform ( final Bitmap source ) { final Paint paint = new Paint(); Bitmap output = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); // DO YOUR DRAWING STUFF ON CANVAS if (source != output) { source.recycle(); } return output; } @Override public String key () { return "customTransformation" + SOME_UNIQUE_IDENTIFIER } }

No olvide sobrescribir el método key () ya que picasso lo usa para generar la entrada de caché.

En su código, simplemente puede usarlo con su solicitud normal de Picasso:

picasso.load(url).transform(new YourTransformation()).into(imageView);

Actualmente estoy usando Picasso y OkHttp para el almacenamiento en caché de mi mapa de bits. Lo que quiero hacer es recuperar un mapa de bits en caché específico, dibujarlo y luego volver a poner ese mapa de bits dibujado en la memoria y el caché de disco. Mi implementación es bastante estándar, solo estoy usando Target y agregando el mapa de bits cargado a un ImageView personalizado que reside en un GridView. He estado mirando alrededor y parece que no puedo encontrar una manera de hacer esto. ¿Estas bibliotecas incluso admiten algo como esto?


Picasso es solo la biblioteca para descargar el almacenamiento en caché y mostrar la imagen (con ventajas como transformaciones, desvanecimiento cruzado, etc.) no para editar. Lo que pareces hacer parece ir más allá del alcance del uso de Picasso.

Diría que todavía puedes usar Picasso para descargar la imagen si quieres, pero cuando obtienes un mapa de bits es tu aplicación la que tiene que almacenar su versión modificada. Por lo tanto, cuando un usuario termine de dibujarlo, debe almacenarlo localmente en un archivo usted mismo (si es una imagen grande, también puede crear miniaturas más pequeñas separadas para GridView) y usar esta versión. Para guardar los contenidos modificados de Bitmap en un archivo, puede llamar

outBitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);

También puede cargar archivos locales en su GridView usando Picasso: Picasso.with(context).load("fileUrl").into(mImageView); . Por lo tanto, en su código debería verificar si tiene una versión editada local y cargarla desde un archivo local usando Picasso o cargarla desde el servidor utilizando Picasso de lo contrario.

Si desea guardar la imagen en el servidor, puede enviarla al servidor una vez que el usuario la haya editado. Luego, Picasso + OkHttp lo descargará nuevamente (suponiendo que haya actualizado atributos de caché HTTP como ETag en el servidor).