我目前正在加载可以是横向或纵向的图像。
我想要调整位图大小以直接绘制到画布上以获得全屏图像。
我需要保持纵横比,但是图像不适合屏幕,但裁剪掉比屏幕大的任何图像。
我可以使用以下内容调整大小并使其适合屏幕:
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);
但我不想在顶部/底部或侧面设置黑条,但我无法想到为此正确调整大小的例程。
答案 0 :(得分:1)
当您自己将图像绘制到画布上时,第一步是根据屏幕尺寸和原始图像宽高比计算最终图像所需的尺寸。
然后使用Bitmap类中的静态函数createScaledBitmap
调整位图大小以匹配计算的尺寸。确保只调用此函数一次并存储位图以便在绘图例程中使用。
最后绘制位图,以便只在屏幕上显示您想要查看的位图区域。
更友好的内存方法是在调用Bitmap.createBitmap
之前添加另一个步骤以使用Bitmap.createScaledBitmap
裁剪图像。这减少了由于用户选择薄而长的源图像而导致的内存问题。