OutOfMemory
异常。这意味着我拥有被裁剪图像的 x、y、宽度和高度,并希望在不将其带入内存的情况下裁剪原始图像。
是的,我知道使用
BitmapRegionDecoder
是一个好主意,但也许被裁剪的图像对于将其带入内存来说太大了。
事实上,我不想要裁剪后的位图,只是想将源文件中的裁剪后图像写入目标文件。
编辑:我想保存裁剪后的图像,而不仅仅是在
ImageView
中显示它。
我想将其保存在新文件中,而不失去尺寸
在这种情况下,被裁剪的图像分辨率为 20000x20000,下面的代码无法使用,因为会出现 OOM:
BitmapRegionDecoder bitmapRegionDecoder = BitmapRegionDecoder.newInstance(inputStream, false);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = bitmapRegionDecoder.decodeRegion(new Rect(width / 2 - 100, height / 2 - 100, width / 2 + 100, height / 2 + 100), options);
mImageView.setImageBitmap(bitmap);
使用inSampleSize来减小原始图片的尺寸是不错的,但我保存的结果不再是20000x20000。
我应该如何裁剪25000x25000的图片并将20000x20000部分保存到文件中?