当我们将Options
inJustDecodeBounds=true
传递给BitmapFactory.decodeStream
方法时,仅解码 文件大小(高度和宽度) )。
android如何计算大小(高度和宽度)?
它是否下载完整文件然后计算尺寸?
在InputStream
中有方法avaliable()
,但它只返回估算的大小
我想知道这个的内部工作。
答案 0 :(得分:0)
从java应用程序调用decodeStream方法将调用基于InputStream类型的本机解码实现的调用。请参阅public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts)
here。
将选项传递给本机解码器实现,并使用签名static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding, jobject options)
进行解码,see here.
进一步检查代码,您将看到在选项inJustDecodeBounds=true
时,在doDecode方法中将布尔onlyDecodeSize
设置为true。然后,解码方法将处理流,直到提取了所有大小的元数据。此时它将返回一个空指针,使您可以访问图像元数据,但不能访问完整图像。