Problema de conversión de URI a Bitmap (2014):
En resumen, estoy tratando de seleccionar una imagen de una galería de teléfonos para mostrar como un mapa de bits para ser reproducido con (obtener RGB promedio) en otra actividad.
En primer lugar, me he encontrado con un par de temas que tratan con URI a la conversión de mapa de bits. Muchos de ellos tienen sugerencias como (from: Recuperar mapa de bits de uri ):
- Retraso en la demostración de uso de la imagen mapa de bits en android
- Cómo manejar try catch exception android
- OutOfMemory Error al intentar girar una imagen dentro de una vista de imagen
- Cómo ver realmente un mapa de bits tomado de un volcado de montón de Android
- Problema de memoria mientras maneja y procesa múltiples mapas de bits grandes
Uri imageUri = intent.getData(); Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(),imageUri); Imageview my_img_view = (Imageview ) findViewById (R.id.my_img_view); my_img_view.setImageBitmap(bitmap);
La línea Bitmap es la línea importante. Cada vez que ejecuto mi aplicación de Android en mi simulador, la aplicación se bloquea (depurador en Eclipse confirma que sucede en la URI -> línea de conversión de mapa de bits), y si pongo la conversión en diferentes actividades (se incluye), entonces sigue bloqueando En la línea de conversión Uri -> Bitmap.
No sé por qué es esto. He intentado hacer mi intención tanto "EXTERNAL_CONTENT_URI" como "INTERNAL_CONTENT_URI" en la intención inicial, y cualquiera de las opciones no importa. Voy a seguir buscando posibles soluciones a mi problema, pero ahora estoy corto de tiempo y siento que sería útil si tuviera algún consejo de fuentes externas.
Alguien sabe por qué siempre se bloquea en esa línea, o si hay alguna solución posible a mi problema? Gracias.
- Dibujar círculo en mapa de bits
- Acceso a datos sin procesar en ARGB_8888 Android Bitmap
- ANR en Canvas.native_drawBitmap
- Error de memoria al cargar mapas de bits
- Cargar imagen grande del servidor en Android
- ¿Hay una manera de cargar y dibujar parcialmente un mapa de bits de archivo en Android?
- Combinar imágenes en android
- Uso de la funcionalidad mapfragment sin conexión
Por favor, obtenga entradas de la uri
Uri imageUri = intent.getData (); Uri IMAGE_URI = imageReturnedIntent.getData ();
InputStream image_stream = getContentResolver (). OpenInputStream (IMAGE_URI);
Bitmap bitmap = BitmapFactory.decodeStream (image_stream);
Intención de inicio
Private static final int REGUEST_CODE = 100;
Intent photoPicker = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, REGUEST_CODE);
OBTENGA EL RESULTADO
@Override protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { super.onActivityResult(requestCode, resultCode, imageReturnedIntent); switch(requestCode) { case REGUEST_CODE : if(resultCode == RESULT_OK){ Uri IMAGE_URI = imageReturnedIntent.getData(); InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI); Bitmap bitmap= BitmapFactory.decodeStream(image_stream ); my_img_view.setImageBitmap(bitmap) } }
}
Uri imageUri = intent.getData(); Uri IMAGE_URI = imageReturnedIntent.getData(); InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI); Bitmap bitmap= BitmapFactory.decodeStream(image_stream ); Intent photoPicker = new Intent(Intent.ACTION_PICK); photoPickerIntent.setType("image/*"); startActivityForResult(photoPickerIntent, REGUEST_CODE);
OBTENGA EL RESULTADO
Uri IMAGE_URI = imageReturnedIntent.getData(); InputStream image_stream = getContentResolver().openInputStream(IMAGE_URI); Bitmap bitmap= BitmapFactory.decodeStream(getContentResolver().openInputStream(IMAGE_URI)); my_img_view.setImageBitmap(bitmap)
¿Qué tamaño tiene el mapa de bits que está intentando transmitir? ¿Puede copiar / pegar el mensaje de error que está recibiendo?
Una razón posible para que tu aplicación se bloquee es que los datos que puedes pasar en la memoria principal de una actividad a otra tienen un tamaño máximo. Creo que el máximo de datos es de 1-2 MB, dependiendo del hardware y la versión del sistema operativo, aunque no puedo encontrar una referencia.