如何将位图重新缩放到不同的屏幕尺寸但保持正方形?

时间:2012-01-29 20:00:38

标签: java android matrix

你好stackoverflow.com的人,我偶然发现我的代码很难;无法根据我的屏幕尺寸调整图像大小。

我的图像是65像素乘65像素,但我希望这个图像在屏幕的某个百分比说6%,同时保持正方形。

我的大脑不能为此处理数学(因为它很慢:-()

(_ width& _height是屏幕宽度和高度)

到目前为止我得到的是:

int width = bitmap.getWidth();
int height = bitmap.getHeight();

int avg_screen_dimension = (_width + _height) / 2;

float scaleWidth =
    ((float) width + (avg_screen_dimension - _width)) / width;
float scaleHeight =
    ((float) height + (avg_screen_dimension - _height)) / height;

// CREATE A MATRIX FOR THE MANIPULATION
Matrix matrix = new Matrix();

// RESIZE THE BIT MAP
matrix.postScale(scaleWidth, scaleHeight);

// RECREATE THE NEW BITMAP

Bitmap resizedBitmap =
    Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

return resizedBitmap;

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

它只不过是简单的代数 - 不需要复杂的数学。

您必须在屏幕宽度或高度的一小部分之间进行选择,除非它们相等。

设h =屏幕高度,w =屏幕宽度,f =屏幕尺寸的分数,x =图像尺寸。

然后x = h * f。如果你想把它变成宽度的一小部分,用w代替h。

答案 1 :(得分:0)

(就像在旁边 - 在粘贴的代码中,你混淆了变量名称:你将它们声明为 height width 但是将它们作为 _width 和 _height