0

将位图转换为字节后再次生成位图,但位图的大小从原始到生成不同。为什么?

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

1 回答 1

0

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

文档

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

于 2012-07-10T12:09:32.993 回答