¿Cómo obtener un objeto de mapa de bits de un Uri (si logro almacenarlo en
/data/data/MYFOLDER/myimage.png
o file///data/data/MYFOLDER/myimage.png
) para usarlo en mi aplicación?
¿Alguien tiene una idea sobre cómo lograr esto?
android
uri
android-image
android-bitmap
ilredelweb
fuente
fuente
Respuestas:
. . IMPORTANTE: Vea la respuesta de @Mark Ingram a continuación y @pjv para una mejor solución. . .
Podrías probar esto:
Pero recuerde, este método solo debe llamarse desde un hilo (no un hilo GUI). Soy una AsyncTask.
fuente
Aquí está la forma correcta de hacerlo:
Si necesita cargar imágenes muy grandes, el siguiente código lo cargará en mosaicos (evitando asignaciones de memoria grandes):
Mira la respuesta aquí
fuente
Aquí está la forma correcta de hacerlo, manteniendo un control del uso de la memoria también:
La llamada getBitmap () de la publicación de Mark Ingram también llama a decodeStream (), por lo que no pierde ninguna funcionalidad.
Referencias
Android: obtenga una miniatura de la imagen en la tarjeta SD, dada la Uri de la imagen original
Manejo de mapas de bits grandes
fuente
getPowerOfTwoForSampleRatio()
se puede omitir la llamada al método . Ver: developer.android.com/reference/android/graphics/…y sí, la ruta debe estar en un formato como este
file:///mnt/sdcard/filename.jpg
fuente
Esta es la solución más fácil:
fuente
fuente
Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(), uri);
Parece que
MediaStore.Images.Media.getBitmap
fue obsoleto enAPI 29
. La forma recomendada es usar elImageDecoder.createSource
que se agregóAPI 28
.Así es como se haría el mapa de bits:
fuente
Puede recuperar el mapa de bits de uri como este
fuente
fuente
Use el método startActivityForResult como se muestra a continuación
Y puede obtener un resultado como este:
fuente
Lo he intentado de muchas maneras. Esto me funciona perfectamente.
Si elige pictrue de la galería. Tienes que ser utensilios de conseguir
Uri
a partir deintent.clipdata
ointent.data
, debido a que uno de ellos puede ser nulo en versión diferente.fuente
puedes hacer esta estructura:
con esto puedes convertir fácilmente una uri a mapa de bits. Espero ayudarte.
fuente
El recuadro del
getBitmap
cual está depricado ahora uso el siguiente enfoque en Kotlinfuente
fuente
(KOTLIN) Entonces, a partir del 7 de abril de 2020, ninguna de las opciones mencionadas funcionó, pero esto es lo que funcionó para mí:
Si desea almacenar el mapa de bits en un val y establecer una imagen con él, use esto:
val bitmap = BitmapFactory.decodeFile(currentPhotoPath).also { bitmap -> imageView.setImageBitmap(bitmap) }
Si solo desea establecer el mapa de bits e imageView, use esto:
BitmapFactory.decodeFile(currentPhotoPath).also { bitmap -> imageView.setImageBitmap(bitmap) }
fuente
Método completo para obtener la imagen uri de la galería móvil.
fuente