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

问题描述 投票:-1回答:1

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

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

© www.soinside.com 2019 - 2024. All rights reserved.