android: récupère les dimensions de l’image sans l’ouvrir

Je veux obtenir la largeur et la hauteur (en pixels) des images stockées sur la carte SD avant de les charger dans la RAM. J’ai besoin de connaître la taille pour pouvoir les sous-échantillonner lors du chargement. Sans les sous-échantillonner, je reçois une exception OutOfMemoryException.

Tout le monde sait comment obtenir les dimensions des fichiers image?

Passez l’option pour simplement décoder les limites à la fabrique:

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) Ssortingng type = options.outMimeType; 

HTH

En fait, il existe un autre moyen de résoudre ce problème. En utilisant la manière ci-dessous, nous pouvons éviter le problème avec le fichier et l’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);