0

我无法理解 android 缩放是如何工作的,我使用了一个矩阵并将位图的大小从 540 x 960 缩放,当我按 1.067 和 1.023 缩放时结果是 682 x 368。

540 * 1.067 = 576 not 368
960 * 1.023 = 981 not 682

我无法理解缩放的逻辑,以及它缩放的值从 0.67 变为 0.7 而不是我放在那里的 1.067 和 1.023。

有谁知道这是如何工作并帮助我的?

编辑:继承人进行缩放的代码:

public Bitmap resizeBitmap(Bitmap b){
  int width = b.getWidth();
  int height = b.getHeight();
  Matrix max = new Matrix();

  max.postScale(Vars.screenWidthMulti, Vars.screenHeightMulti);
  Bitmap resizedBitmap = Bitmap.createBitmap(b, 0, 0, width, height, max, false);
  return resizedBitmap;

}

我不知道 Bitmap.createScaledBitmap 但如果它有助于它给出相同的结果,所以我猜它只是一个缩放矩阵,如下所示:/

EDIT2:我发现在两个轴上缩放 1.5f 使位图成为原始大小,现在通过分割长度得到的缩放因子似乎与缩放矩阵使用不匹配,所以我不知道如何“转换”他们让它正常工作。

4

1 回答 1

0

我发现矩阵缩放将输入的值除以 1.5f,因此当它缩放得如此奇怪时它没有任何意义。下面是我添加到函数中的内容,现在可以正常工作(至少对于缩放 1f 及以上):

if(Vars.screenWidthMulti > 1 && Vars.screenWidthMulti != 1){
    scaleWidth = 1.5f+(Vars.screenWidthMulti-1)*1.5f;
    scaleHeight = 1.5f+(Vars.screenHeightMulti-1)*1.5f;
}else if(Vars.screenWidthMulti == 1){
    scaleWidth = 1f;
    scaleHeight = 1f;
}else if(Vars.screenWidthMulti < 1){
    scaleWidth = 1.5f -(Vars.screenWidthMulti*1.5f);
    scaleHeight = 1.5f -(Vars.screenHeightMulti*1.5f);
}

注意:我还没有测试过低于 1 的缩放比例,所以请注意。

于 2013-05-17T20:51:33.327 回答