如何裁剪位图使其与屏幕大小匹配

时间:2013-11-18 17:04:32

标签: android bitmap

起点:在我的应用程序中,我让用户选择一个将用作应用程序背景的图像。如果图像的宽度/高度大于设备的屏幕宽度/高度,我想裁剪图像,使其与设备尺寸相匹配(见下图)。

enter image description here

我尝试了下面的方法,但没有运气,结果图像搞砸了。

    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以使其宽度/高度与屏幕的宽度/高度相匹配?

1 个答案:

答案 0 :(得分:2)

我不是Android开发人员,但我想你的startX和startY变量是不正确的。

我认为你会想要这样的东西:

startX = (bmp.getWidth() - screenWidth) / 2;
startY = (bmp.getHeight() - screenHeight) / 2;

然后你的绘制X和Y长度就是屏幕的宽度和高度。