Android: получить размеры изображения без его открытия
Я хочу получить ширину и высоту (в пикселях) изображений, которые хранятся на SD-карте, прежде чем загружать их в ОЗУ. Мне нужно знать размер, поэтому я могу уменьшить их соответственно при загрузке. Без понижающей дискретизации я получаю исключение OutOfMemoryException.
Кто-нибудь знает, как получить размеры файлов изображений?
Ответы
Ответ 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);