2016-02-25 2 views
0

Я пытаюсь написать метод, который принимает 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() 

Что случилось с моим кодом?

ответ

1

В случае 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); 
} 
+0

работает должным образом, спасибо – earthw0rmjim

-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"); 

Сообщите мне, если это работает! :)

+0

Я не видел вашего ответа! –