根据最小高度和宽度设置android位图大小,保持宽高比

时间:2015-05-09 00:34:49

标签: android android-bitmap

我目前正在加载可以是横向或纵向的图像。

我想要调整位图大小以直接绘制到画布上以获得全屏图像。

我需要保持纵横比,但是图像不适合屏幕,但裁剪掉比屏幕大的任何图像。

我可以使用以下内容调整大小并使其适合屏幕:

Matrix m = new Matrix();
m.setRectToRect(new RectF(0, 0, b.getWidth(), b.getHeight()), new RectF(0, 0, MyWallpaperService.this.width, MyWallpaperService.this.height),     Matrix.ScaleToFit.CENTER);
b = Bitmap.createBitmap(b, 0, 0, b.getWidth(), b.getHeight(), m, true);

但我不想在顶部/底部或侧面设置黑条,但我无法想到为此正确调整大小的例程。

1 个答案:

答案 0 :(得分:1)

当您自己将图像绘制到画布上时,第一步是根据屏幕尺寸和原始图像宽高比计算最终图像所需的尺寸。

然后使用Bitmap类中的静态函数createScaledBitmap调整位图大小以匹配计算的尺寸。确保只调用此函数一次并存储位图以便在绘图例程中使用。

最后绘制位图,以便只在屏幕上显示您想要查看的位图区域。

更友好的内存方法是在调用Bitmap.createBitmap之前添加另一个步骤以使用Bitmap.createScaledBitmap裁剪图像。这减少了由于用户选择薄而长的源图像而导致的内存问题。