如何在四个方面裁剪位图?

时间:2016-02-25 09:47:02

标签: java android bitmap android-bitmap

我尝试编写一个方法,该方法将Bitmap和裁剪值作为参数并返回裁剪的Bitmap

我的代码:

public Bitmap applyCrop(Bitmap bitmap, int leftCrop, int topCrop, int rightCrop, int bottomCrop) {
    return Bitmap.createBitmap(bitmap, leftCrop, topCrop, bitmap.getWidth() - rightCrop, bitmap.getHeight() - bottomCrop);
}

使用此代码我收到以下IllegalArgumentException

java.lang.IllegalArgumentException: x + width must be <= bitmap.width()

我的代码出了什么问题?

2 个答案:

答案 0 :(得分:2)

如果Bitmap.createBitmap()正在拍摄裁剪图像的大小而不是第二个角的坐标,您应该这样做:

public Bitmap applyCrop(Bitmap bitmap, int leftCrop, int topCrop, int rightCrop, int bottomCrop) {
    int cropWidth = bitmap.getWidth() - rightCrop - leftCrop;
    int cropHeight = bitmap.getHeight() - bottomCrop - topCrop;
    return Bitmap.createBitmap(bitmap, leftCrop, topCrop, cropWidth, cropHeight);
}

答案 1 :(得分:-1)

这里我有一个样品给你。使用此

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


//pass your bitmap here and give desired width and height
newBitmap=Bitmap.createBitmap(bitmap, 0,0,"GIVE WIDTH HERE", "GIVE HEIGHT HERE");

让我知道这是否有效! :)