我正在创建一个编辑照片应用,在用户在缩放图像预览中选择裁剪区域后,我想裁剪原始图像上的比例区域。为此,我使用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。