Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android BitmapFactory decodeStream()_Android_Decode_Bitmapfactory_Sample Size - Fatal编程技术网

Android BitmapFactory decodeStream()

Android BitmapFactory decodeStream(),android,decode,bitmapfactory,sample-size,Android,Decode,Bitmapfactory,Sample Size,我有一个问题,我似乎找不到答案。 这些代码行是否: final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeStream(is, null, options); 实际上是说,那个文件正在下载?Android文档中有这样的说法: 使用inJustDecodeBounds进行解码=true以检查

我有一个问题,我似乎找不到答案。 这些代码行是否:

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

    BitmapFactory.decodeStream(is, null, options);
实际上是说,那个文件正在下载?Android文档中有这样的说法:

使用inJustDecodeBounds进行解码=true以检查尺寸

是否:

这意味着它将实际下载较小的文件(不作为原始大小下载,然后复制到较小大小的位图中)


清楚的例子:我有一些url指向许多2000 x 1500的图像。通过解码这些文件并将其加载到位图,如果我只需要(200 x 150)的缩略图,我是否需要足够的内存以完全分辨率(2000 x 1500)下载该文件?

确实看起来该文件正在下载,而在内存中加载的位图是较小的位图,那么效率部分就来了(正在使用inSampleSize选项解码的一个)。

我知道另一个答案已经被接受为正确答案,但为了清楚起见

此行
options.inJustDecodeBounds=true;
表示调用
BitmapFactory.decodeStream(is,null,options);
不获取位图信息,但获取边界信息和MimeType

然后,您可以使用这些返回值,
outWidth
outHeight
outMimeType
通过设置
options.inJustDecodeBounds=false;
并将样本大小设置为由所需输出维度
选项确定的给定比率来获取位图数据的“重采样”版本。inSampleSize=[int]


有关更多信息,请参阅此信息丰富的页面:

我认为您需要下载完整分辨率(2000 x 1500),除非服务器提供任何尺寸减小参数。
options.inSampleSize = calculateInSampleSize(options, reqWidth,
            reqHeight);

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