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:
- Pinzado de certificado SSL con Picasso
- Hay una manera de cargar una imagen predeterminada en picasso
- Imagen parpadeando mientras se desplaza en RecyclerView
- Imágenes que no se cargan con Picasso sin error
- Recyclerview dolorosamente lento para cargar imágenes en caché de Picasso
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.
- Obteniendo el ancho y altura de la imagen con la biblioteca picasso
- Acercamiento a las imágenes de Android en DB
- Lenta Cargando imágenes grandes con Picasso
- No puedo almacenar en caché las imágenes mientras que bindind la imagen usando MvvmCross
- Cómo recuperar la rotación de miniaturas
- Siempre se desvanecen en el marcador de posición con Picasso
- Cómo cargar diseño de fondo utilizando Picasso
- Buscar imágenes con Callback en Picasso?
- Android – fuera de error de memoria -Modificador de cadena agrandar buffer
- Android PhotoView Mantenga el zoom después del cambio de orientación