我正在开发一个用于图像处理的应用程序。 我使用BitmapFactory.decodeStream来加载图像,当我按下按钮将图像传递给setPixel时,它会导致OutOfMemoryError。 我尝试过较小的图像是可以的。
无论如何加载一个大图像并立即将其保存在较小尺寸的Bitmap中?
答案 0 :(得分:2)
使用BitmapFactory.Options.inSampleSize
解码较小的位图。
public int inSampleSize
自:API Level 1
如果设置为值> 1,请求解码器对原始进行二次采样 图像,返回较小的图像以节省内存。样本量是 任一维度中对应于单个像素的像素数 解码后的位图中的像素。例如,
inSampleSize == 4
返回一个 图像是原稿宽度/高度的1/4,和1/16 像素数。任何值< = 1都被视为1.注意: 解码器将尝试满足此请求,但生成的位图可能会 具有不同的尺寸,正是所要求的。 此外,2的幂通常更快/更容易让解码器兑现。