在android上将大位图文件调整为缩放输出文件
我在一个文件中有一个大位图(比如3888x2592)。现在,我希望将该位图调整为800x533,并将其保存到另一个文件中。我通常会通过调用Bitmap.createBitmap
方法,但它需要一个源位图作为第一个参数,但我无法提供这个参数,因为将原始图像加载到Bitmap对象中当然会超出内存(请参见这里例如)。
我也不能读位图,例如,BitmapFactory.decodeFile(file, options)
,提供BitmapFactory.Options.inSampleSize
,因为我想把它调整到精确的宽度和高度。使用inSampleSize
将位图调整为972x648(如果我使用inSampleSize=4
)或至778x518(如果我使用inSampleSize=5
,这甚至不是一种力量。
我还想避免使用inSampleSize读取图像,例如,在第一步中使用972x648,然后在第二步将其调整到精确的800x533,因为与原始图像的直接调整相比,质量会很差。
总结我的问题:是否有一种方法可以读取10 MP或更多的大型图像文件,并将其保存到新的图像文件中,调整到特定的新宽度和高度,而无需获得OutOfMemory异常?
我也试过BitmapFactory.decodeFile(file, options)
并手动将Options.outHight和Options.outWidth值设置为800和533,但它不是这样工作的。