在Android中裁剪图像的特定部分

10

我希望从下面这张图片中裁剪出红色部分,是否有在安卓中可以简单实现的方法来裁剪这张图片。

Sample Image that i want to crop

我找到了许多相关的问题,但是它们都建议使用以下代码:

Bitmap croppedBitmap = Bitmap.createBitmap(bitmapOriginal, 100, 100,100, 100); 

如果宽度和高度大约为2MP分辨率,则此代码可以正常工作,但是如果裁剪部分的分辨率超过3MP,则应用程序会崩溃并显示OOM错误。

是否有办法在裁剪时处理分辨率超过3MP的图像?

3个回答

6
您可以使用以下代码来解决您的问题。
Matrix matrix = new Matrix();
matrix.postScale(0.5f, 0.5f);
Bitmap croppedBitmap = Bitmap.createBitmap(bitmapOriginal, 100, 100,100, 100, matrix, true);

上述方法在裁剪之前进行图像的后缩放,因此您可以获得最佳的裁剪结果而不会出现OOM错误。
如需更多详细信息,请参考此博客

postScale有什么用途? - Swapnil Kadam

2

1- 将您的ImageView更改为位图

final Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.img);

2-使用位图来裁剪你想要的内容

Bitmap croppedBmp = Bitmap.createBitmap(bitmap, x, y , width , height);

3-从顶部和左侧注意x,y的位置

4-预览你的位图,再次在你的imageview中显示

imageView.setImageBitmap(croppedBmp);

0

如果您想以任何形状或仅选择的部分裁剪图像,则可以使用现成的开源库


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接