【问题标题】:how to crop a Bitmap so it matches the screen size如何裁剪位图使其与屏幕尺寸匹配
【发布时间】:2013-11-19 01:13:39
【问题描述】:

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

我尝试了下面的方法,但完全没有运气,生成的图像一团糟。

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

【问题讨论】:

  • 这应该对你有帮助:stackoverflow.com/a/9891929/2664466
  • “结果图像混乱”是什么意思?同样正如 Collin 提到的,您可能需要将生成的位图适合您的 ImageView
  • @Chewie 这意味着结果只是原始图像的一些模糊部分。我现在不使用任何视图,我在 sd 卡上创建一个目录并将图像保存在那里

标签: android bitmap


【解决方案1】:

我不是安卓开发者,但我想你的 startX 和 startY 变量不正确。

我想你会想要这样的:

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

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

【讨论】:

  • 看起来合乎逻辑,但生成的图像仍然只是原始图像的一些模糊部分..
猜你喜欢
  • 2013-04-09
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 2016-01-16
  • 2023-04-01
相关资源
最近更新 更多