You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何基于RoundRect坐标对拍摄获得的图片进行精确裁剪

换算逻辑

完全不需要缩放原图,直接通过相对比例换算即可,不会损失画质也不会改变长宽比:

  1. 先获取两个基础尺寸
  • 屏幕尺寸:屏幕总宽度screenWidth、屏幕总高度screenHeight
  • 拍摄原图尺寸:原Bitmap的宽度originalBpWidth、原Bitmap的高度originalBpHeight
  1. 计算界面上圆角矩形区域的相对比例(占屏幕的比例,和绝对像素无关)
  • 左边界相对比例:leftRatio = 0.02(对应屏幕宽度2%的左边距)
  • 右边界相对比例:rightRatio = 0.98(对应屏幕宽度2%的右边距)
  • 上边界相对比例:topRatio = 0.15(对应屏幕高度15%的上边距)
  • 下边界相对比例:根据你的圆角矩形实际高度计算,比如你的圆角矩形高宽比为4:3,那么圆角矩形的实际高度为 screenWidth * 0.96 * 4 / 3,对应的下边界相对比例为 bottomRatio = 0.15 + (screenWidth * 0.96 * 4 / 3) / screenHeight;如果你的圆角矩形底部边距固定,直接用1 - 底部边距百分比即可。
  1. 用相对比例换算原图上的裁剪参数
  • 裁剪左偏移:left = (int) (leftRatio * originalBpWidth)
  • 裁剪上偏移:top = (int) (topRatio * originalBpHeight)
  • 裁剪宽度:cropWidth = (int) ((rightRatio - leftRatio) * originalBpWidth)
  • 裁剪高度:cropHeight = (int) ((bottomRatio - topRatio) * originalBpHeight)
  1. 调用裁剪方法
    注意Bitmap.createBitmap的后两个参数是裁剪宽度和高度,不是右、下边界坐标,正确调用方式为:
Bitmap croppedBp = Bitmap.createBitmap(originalBp, left, top, cropWidth, cropHeight);

注意事项

需要确保相机预览的宽高比和拍照输出的照片宽高比完全一致,否则预览界面上的圆角矩形位置和实际照片的内容会有偏移,可在相机初始化时强制设置预览、拍照输出的尺寸为相同宽高比,避免拉伸。

内容的提问来源于stack exchange,提问作者debugger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 00:24:02