我正在阅读一篇关于如何有效加载位图的文章 here。它建议使用一些技术加载位图,其大小需要而不是实际大小。唯一的事情是我没有得到inSampleSize
变量的作用(必须是2的幂)。如果我选择数字1,这是否意味着如果我正常加载一个真实大小的位图?
答案 0 :(得分:3)
Rajesh引用了inSampleSize
所做的文件中的解释;该解释可以用图表进行扩展。
重要的部分是:
样本大小是任一维度中与解码位图中的单个像素对应的像素数。
所以,如果我们有这个图像(每个字母代表一个像素):
AAAABBBB
AAAABBBB
AAAABBBB
AAAABBBB
CCCCDDDD
CCCCDDDD
CCCCDDDD
CCCCDDDD
我们设置inSampleSize = 2
,我们会得到一个如下所示的解码位图:
AABB
AABB
CCDD
CCDD
也就是说,原始图像中的2个像素(AA
)对应于解码图像中的1个像素(A
)。
如果我们设置inSampleSize = 4
,我们会得到一个如下所示的解码位图:
AB
CD
即,原始图像中的4个像素对应于解码图像中的1个像素。
注意,{2}的inSampleSize
有效地将垂直和水平分辨率减半,但使用1/4的像素 - 因此只有1/4的内存。
答案 1 :(得分:1)
请阅读inSampleSize
如果设置为值>如图1所示,请求解码器对原始图像进行二次采样,返回较小的图像以节省存储器。样本大小是任一维度中对应于解码位图中的单个像素的像素数。例如,inSampleSize == 4返回的图像是原始宽度/高度的1/4,像素数量的1/16。任何值< = 1都被视为1.注意:解码器使用基于2的幂的最终值,任何其他值将向下舍入到最接近的2的幂。
如果我选择数字1,这是否意味着如果我正常加载一个具有实际尺寸的位图?
是的,1表示没有子采样。