如何在原生/内部计算图像大小?

时间:2017-12-21 09:18:27

标签: java android performance android-bitmap native-activity

当我们将Options inJustDecodeBounds=true传递给BitmapFactory.decodeStream方法时,仅解码 文件大小(高度和宽度) )。
android如何计算大小(高度和宽度)?
它是否下载完整文件然后计算尺寸?
InputStream中有方法avaliable(),但它只返回估算的大小 我想知道这个的内部工作。

1 个答案:

答案 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。然后,解码方法将处理流,直到提取了所有大小的元数据。此时它将返回一个空指针,使您可以访问图像元数据,但不能访问完整图像。