Изменение размера растрового изображения в формате Android
У меня есть пользовательский вид (1066 x 738), и я передаю растровое изображение (720x343). Я хочу масштабировать растровое изображение, чтобы оно соответствовало настраиваемому представлению без превышения границы родителя.
![enter image description here]()
Я хочу добиться чего-то вроде этого:
![enter image description here]()
Как мне рассчитать размер растрового изображения?
Как я рассчитываю новую ширину/высоту:
public static Bitmap getScaledBitmap(Bitmap b, int reqWidth, int reqHeight)
{
int bWidth = b.getWidth();
int bHeight = b.getHeight();
int nWidth = reqWidth;
int nHeight = reqHeight;
float parentRatio = (float) reqHeight / reqWidth;
nHeight = bHeight;
nWidth = (int) (reqWidth * parentRatio);
return Bitmap.createScaledBitmap(b, nWidth, nHeight, true);
}
Но все, что я достигаю, это:
![enter image description here]()
Ответы
Ответ 1
Вы должны попробовать использовать матрицу преобразования, созданную для ScaleToFit.CENTER
. Например:
Matrix m = new Matrix();
m.setRectToRect(new RectF(0, 0, b.getWidth(), b.getHeight()), new RectF(0, 0, reqWidth, reqHeight), Matrix.ScaleToFit.CENTER);
return Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true);