使用字节大小生成的位图与Original不同?

时间:2012-07-10 09:32:23

标签: android bitmap byte

将位图转换为字节后再次生成位图,但位图的大小因原始而异。为什么?

  

原始位图宽度: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);

1 个答案:

答案 0 :(得分:0)

这是您设置bitmapOptions.inSampleSize = 2后的预期行为。事实上,正如文档中指出的那样,如果inSampeSize > 1,解码器将对原始图像进行二次采样。

来自doc

  

如果设置为值> 1,请求解码器对原始进行二次采样   图像,返回较小的图像以节省内存。样本量是   任一维度中对应于单个像素的像素数   解码后的位图中的像素。例如,inSampleSize == 4返回一个   图像是原稿宽度/高度的1/4,和1/16   像素数。任何值< = 1都被视为1.注意:   解码器将尝试满足此请求,但生成的位图可能会   具有不同的尺寸,正是所要求的。   此外,2的幂通常更快/更容易让解码器兑现。