Я хочу, чтобы мое изображение было обрезано по центру, и по щелчку этого полного изображения отображается.
Я искал в Google и нашел какой-то код, который делает то, что я хотел, но я не мог понять какую-то его часть.
public Bitmap scaleCenterCrop(Bitmap source, int newHeight, int newWidth) {
float xScale = (float) newWidth / sourceWidth;
float yScale = (float) newHeight / sourceHeight;
float scale = Math.max(xScale, yScale);
float scaledWidth = scale * sourceWidth;
float scaledHeight = scale * sourceHeight;
// Я понял, пока здесь, приведенный выше код используется для масштабирования изображения.
float left = (newWidth - scaledWidth) / 2;
float top = (newHeight - scaledHeight) / 2;
// The target rectangle for the new, scaled version of the source bitmap will now
// be
RectF targetRect = new RectF(left, top, left + scaledWidth, top + scaledHeight);
Вышеуказанный прямоугольник - это то, что я не понимаю Для одного из моих изображений значение аргумента "top" отрицательно. Как можно android выбрать верхнюю часть изображения, если оно отрицательное.
Bitmap dest = Bitmap.createBitmap(newWidth, newHeight, source.getConfig());
Canvas canvas = new Canvas(dest);
canvas.drawBitmap(source, null, targetRect, null);
return dest;
}
1) Насколько я знаю, вышеуказанный прямоугольник будет соответствовать исходное изображение в соответствии с границами, и если я оставлю значение 20 в качестве левого значения, изображение будет отображать поле с разницей в 20 слева, а если я задаю 0, то оно займет всю ширину, то как оно принимает отрицательные значения.
2) Как код получил точное положение центра изображения?
Было бы очень полезно, если бы кто-то ответил на вышеуказанные вопросы. Заранее спасибо.