在没有OutOfMemory的情况下裁剪大型Bitmap的一部分 - Android

时间:2012-08-20 05:59:03

标签: android bitmap crop

我正在创建一个编辑照片应用,在用户在缩放图像预览中选择裁剪区域后,我想裁剪原始图像上的比例区域。为此,我使用BitmapRegionDecoder,如下所示:

InputStream in = mContentResolver.openInputStream(this.photoUri);
BitmapRegionDecoder regionDecoder = BitmapRegionDecoder.newInstance(in, false);

BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = false;

//The following line causes an OutOfMemory
croppedBitmap = regionDecoder.decodeRegion(new Rect(x, y, destX, destY), o);

但我仍然得到一个OutOfMemory异常。我正在考虑使用BitmapRegionDecoder读取小片并在byte []上缓冲它,但我不确定它是否是一个很好的解决方案。

我认为必须有一个更好的解决方案,因为我已经使用了其他版本工具来裁剪大图像。有什么想法吗?

提前致谢, 内托。

*可能的解决方案!! * 在与很多人交谈之后,经过长时间的互联网搜索,我在Stackoverflow中发现了类似问题的其他问题,此时似乎是解决这个问题的最佳方法:使用NDK。

Bitmap/Canvas use and the NDK

0 个答案:

没有答案