2012-06-20 7 views
38

Quiero obtener el ancho y el alto (en píxeles) de las imágenes que se almacenan en la tarjeta SD, antes de cargarlas en la memoria RAM. Necesito saber el tamaño, así que puedo reducir la resolución de ellos al cargarlos. Sin bajar la resolución de ellos obtengo una OutOfMemoryException.android: obtenga las dimensiones de la imagen sin abrirlo

¿Alguien sabe cómo obtener las dimensiones de los archivos de imagen?

Respuesta

104

pasar la opción de simplemente decodificar los límites de la fábrica:

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 

//Returns null, sizes are in the options variable 
BitmapFactory.decodeFile("/sdcard/image.png", options); 
int width = options.outWidth; 
int height = options.outHeight; 
//If you want, the MIME type will also be decoded (if possible) 
String type = options.outMimeType; 

HTH

+1

¿Cómo se puede obtener el valor de Densidad? – breceivemail

+0

Eso funciona cuando options.inJustDecodeBounds = false; – Cabezas

+1

devuelve 0 para alto y ancho – AlwaysConfused

2

En realidad, hay otra manera de resolver este problema. Usando el siguiente ejemplo, podemos evitar el problema con el archivo y el URI.

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inJustDecodeBounds = true; 
ParcelFileDescriptor fd = mContext.getContentResolver().openFileDescriptor(u, "r"); // u is your Uri 
BitmapFactory.decodeFileDescriptor(fd.getFileDescriptor(), null, options); 
+0

Vea también http://stackoverflow.com/questions/23867823/get-image-width-and-height-from-uri?lq=1. – CoolMind

Cuestiones relacionadas