起点:在我的应用程序中,我让用户选择一个将用作应用程序背景的图像。如果图像的宽度/高度大于设备的屏幕宽度/高度,我想裁剪图像,使其与设备尺寸相匹配(见下图)。
我尝试了下面的方法,但没有运气,结果图像搞砸了。
private Bitmap crop(Bitmap bmp) {
int centerW = bmp.getWidth() / 2;
int centerH = bmp.getHeight() / 2;
int startX = centerW
//returns screen width
- GetSettings.getScreenDimensions(getActivity())[0] / 2;
int startY = centerH
//returns screen height
- GetSettings.getScreenDimensions(getActivity())[1] / 2;
return Bitmap.createBitmap(bmp, startX, startY,
GetSettings.getScreenDimensions(getActivity())[0],
GetSettings.getScreenDimensions(getActivity())[1]);
}
我想我误解了我需要传递给createBitmap()
方法以获得正确结果的参数。
那么如何裁剪Bitmap
以使其宽度/高度与屏幕的宽度/高度相匹配?
答案 0 :(得分:2)
我不是Android开发人员,但我想你的startX和startY变量是不正确的。
我认为你会想要这样的东西:
startX = (bmp.getWidth() - screenWidth) / 2;
startY = (bmp.getHeight() - screenHeight) / 2;
然后你的绘制X和Y长度就是屏幕的宽度和高度。