Picasso – obtener el camino de la imagen cargada
Estoy utilizando Picasso en mi aplicación de Android para cargar imágenes de la URL. Estas imágenes se muestran en algunos ListView
. Cuando el usuario hace clic en algún elemento de este ListView
, necesito crear un Intent
uso compartido con la imagen seleccionada.
Creo la intención de compartir con este código:
- Descargar y guardar imágenes con Picasso
- Android + Picasso: cambiar la caducidad del caché de URL
- Picasso carga imagen con triángulo en la esquina de la imagen
- Imagen parpadeando mientras se desplaza en RecyclerView
- Los resultados de RecyclerView + Glide resultan en un lío
Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(localPath)); shareIntent.putExtra(Intent.EXTRA_TEXT, mUrl); shareIntent.setType("image/jpg"); startActivity(Intent.createChooser(shareIntent, getString(R.string.label_share)));
En el código anterior, hay una variable local localPath
. Esta variable debe contener la ruta a la imagen. Supongo que Picasso tiene algún caché, donde se almacenan las imágenes descargadas. ¿Hay alguna forma de recuperar la ruta de la imagen seleccionada?
ACTUALIZACIÓN: Solución parcial
Finalmente, encontré una solución que funciona para mí. Pero no sé, si se trata de una solución correcta o si existe mejor solución.
He creado una clase que implementa la interfaz com.squareup.picasso.Target
y en el método onBitmapLoaded(Bitmap bitmap, LoadedFrom from)
He proporcionado esta implementación:
@Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { mImageView.setImageBitmap(bitmap); mImageUri = getBitmapUri(bitmap, mName)); } private Uri getBitmapUri(Bitmap bitmap, String title) { ByteArrayOutputStream bytes = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes); String path = MediaStore.Images.Media.insertImage(mContext.getContentResolver(), bitmap, title, null); return Uri.parse(path); }
Después de eso, tengo mImageUri
que puedo pasar a la intención de compartir. Tal vez esta parte del código sea útil para alguien.
Pero no sé si existe una mejor solución. En mi solución tengo que almacenar Bitmap
en disco, pero tal vez hay una misma imagen en el disco ya, porque Picasso lo cargó. Y también, no sé si tengo que eliminar la imagen de MediaStore
cuando ya no lo necesito.
- ¿Cómo obtengo el mapa de bits resultante de una imagen después de haber sido redimensionado en una vista de imagen con picasso
- Android Picasso Configurar el tamaño de LruCache
- Android: utilice picasso para cargar imágenes sin almacenarlas en caché
- Android Picasso - Marcador de posición y estilo de imagen de error
- Picasso Imagen para Android cargando - modelo de hilo
- ¿Cómo evitar la reordenación de elementos en StaggeredGridLayoutManager después del cambio de orientación?
- Las imágenes no se cargan en android 5.0 usando la biblioteca picasso
- Guardar imagen de url usando Picasso?
- Android – fuera de error de memoria -Modificador de cadena agrandar buffer
- Android PhotoView Mantenga el zoom después del cambio de orientación