2013-04-18 4 views
0

У меня вопрос, что я, кажется, не нахожу ответа нигде. ли эти строки кода:Android BitmapFactory decodeStream()

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

    BitmapFactory.decodeStream(is, null, options); 

на самом деле означает, что этот файл загружается? Android документы говорят, что-то вроде этого:

расшифровывает с inJustDecodeBounds = справедливо, чтобы проверить размеры

и DoES:

options.inSampleSize = calculateInSampleSize(options, reqWidth, 
      reqHeight); 

    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 
    BitmapFactory.decodeStream(is, null, options); 

означает, что он будет на самом деле скачать файл меньше (не загружен в качестве исходного размера и скопирован после этого на растровое изображение меньшего размера).

Яркий пример: у меня есть URL-адрес этого URL-адреса для многих изображений 2000 x 1500. Дешифрируя эти файлы и загружая их в растровые изображения, мне нужно иметь достаточно памяти для загрузки файла с полным разрешением (2000 x 1500), если мне нужны только миниатюры (200 x 150)?

+0

Я думаю, вам нужно будет загрузить полное разрешение (2000 х 1500), если сервер не предоставляет каких-либо размер восстанавливающий параметров. – Abx

ответ

0

Действительно выглядит, как файл загружается, а эффективная часть появляется там, где битмап, загружаемый в память, является меньшим (тот, который декодируется с параметрами inSampleSize).

2

Я знаю еще один ответ уже был принят, как право один, но для ясности ...

Эта линия options.inJustDecodeBounds = true; означает, что вызов BitmapFactory.decodeStream(is, null, options); не получает информацию растровый но получить ограничивающую информацию и MimeType ,

Вы можете затем использовать эти возвращенные значения, outWidth, outHeight и outMimeType, чтобы получить «» передискретизируется версию растровых данных путем установки options.inJustDecodeBounds = false; и настройка размера выборки в заданном соотношении, определяемом ваших желаемых размеров выходных options. inSampleSize = [int].

Смотреть это очень информативную страницу для получения дополнительной информации: Loading Large Bitmaps Efficiently

Смежные вопросы