将位图转换为字节后再次生成位图,但位图的大小因原始而异。为什么?
原始位图宽度:284高度:139
位图样本大小因子:2
转换图像宽度:142高度:69
要转换使用以下代码:
BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
bitmapOptions.inSampleSize = powerOf2;
bitmapOptions.inPurgeable = true;
bitmapOptions.inInputShareable = true;
bmp = BitmapFactory.decodeByteArray(imgRawBytes, 0, imgRawBytes.length,
bitmapOptions);
答案 0 :(得分:0)
这是您设置bitmapOptions.inSampleSize = 2
后的预期行为。事实上,正如文档中指出的那样,如果inSampeSize > 1
,解码器将对原始图像进行二次采样。
来自doc:
如果设置为值> 1,请求解码器对原始进行二次采样 图像,返回较小的图像以节省内存。样本量是 任一维度中对应于单个像素的像素数 解码后的位图中的像素。例如,inSampleSize == 4返回一个 图像是原稿宽度/高度的1/4,和1/16 像素数。任何值< = 1都被视为1.注意: 解码器将尝试满足此请求,但生成的位图可能会 具有不同的尺寸,正是所要求的。 此外,2的幂通常更快/更容易让解码器兑现。