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

标签 java android matrix

您好 stackoverflow.com 的伟大人们,我在我的代码中偶然发现了一个很大的困难;无法根据屏幕尺寸调整图像大小。

我有一个图像,例如 65 像素 x 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;

任何帮助将不胜感激!

最佳答案

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

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

设 h = 屏幕高度,w = 屏幕宽度,f = 屏幕尺寸的一部分,x = 图像大小。

那么 x = h*f。如果您想让它成为宽度的一小部分,请将 w 替换为 h。

关于java - 如何将位图重新缩放到不同的屏幕尺寸但保持正方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056278/

相关文章:

Java Eclipse 构建路径错误 Maven

python - 将二进制 numpy 矩阵中的连续 1 block 翻转到一定大小

Java:更容易 pretty-print ?

java - 如果 JPanel 填满屏幕,它不会移动

java - 安卓工作室 : Using ImageButton to start new activity crashes the app

android - 如何以编程方式关闭棉花糖设备中特定应用程序的打瞌睡模式

android - 来自 Activity 的应用小部件对话框未在 Redmi 手机中显示

android - 软键盘打开时显示布局

python - 有没有办法在 NumPy 中使数组条目成为复杂变量?

r - 删除 R 中的行标识符