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);