Подтвердить что ты не робот

Android: получить размеры изображения без его открытия

Я хочу получить ширину и высоту (в пикселях) изображений, которые хранятся на SD-карте, прежде чем загружать их в ОЗУ. Мне нужно знать размер, поэтому я могу уменьшить их соответственно при загрузке. Без понижающей дискретизации я получаю исключение OutOfMemoryException.

Кто-нибудь знает, как получить размеры файлов изображений?

4b9b3361

Ответ 1

Передайте возможность просто декодировать границы в factory:

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;

НТН

Ответ 2

На самом деле есть другой способ решить эту проблему. Используя ниже, мы можем избежать проблем с файлом и 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);