Равномерное обрезание растрового изображения со всех углов

У меня есть растровое изображение шириной 720 и высотой 1020. Я хочу обрезать все четыре угла растрового изображения с одинаковым значением, скажем, 50. Итак, 50 сверху, слева, снизу и справа. Вот как я пробовал это в своем коде

sourceImg = Bitmap.createBitmap(sourceImg, 50,
                            50, sourceImg.getWidth() - 50, sourceImg.getHeight() - 50);

Верхний и левый кадры обрезаются правильно, а нижний и правый — нет.


person Amanni    schedule 23.04.2014    source источник
comment
Если верх и левый обрезаются правильно, может показаться, что из двух последних параметров нужно вычесть именно corner, а не corner/2.   -  person Mike M.    schedule 23.04.2014
comment
Отредактировал вопрос, чтобы избежать путаницы. Не могли бы вы объяснить, почему мне нужно изменить значение, которое я вырезаю из растрового изображения справа и снизу?   -  person Amanni    schedule 23.04.2014
comment
Последние два параметра, IIRC, не правый и нижний, а ширина и высота. Таким образом, если верхний и левый края равны 50, а вы хотите, чтобы граница была ровной по всему периметру, вам нужно, чтобы ширина и высота были на 2 * 50 меньше.   -  person Mike M.    schedule 23.04.2014


Ответы (1)


Вы должны использовать приведенный ниже расчет. Ширина и высота уменьшаются на значение угла (половина с каждой стороны).

sourceImg = Bitmap.createBitmap(sourceImg, 
    corner/2, 
    corner/2, 
    sourceImg.getWidth() - corner, 
    sourceImg.getHeight() - corner);
person Szymon    schedule 23.04.2014
comment
Теперь работает нормально. Теперь я понимаю, почему мне нужно сделать это именно так. Спасибо - person Amanni; 23.04.2014