在Android中实现自定义图像裁剪

时间:2015-06-23 19:14:05

标签: android image bitmap

我需要实现自定义图像裁剪,而不是使用系统裁剪(即“com.android.camera.action.CROP”)。我需要知道裁剪边界框的确切位置,但如果我选择使用默认裁剪,则无法检索此信息。此外,默认裁剪时,位图图像下采样过多。

步骤如下:

  1. 从源创建原始大小的位图(使用uri)。该 原始大小约为4000x3000,太大了。
  2. 用户定义裁剪区域以提取ROI,从而调整原始图像的大小以适合ImageView。 (ImageView的大小约为700x700)
  3. 在ImageView中记录边界框的位置。
  4. 从原始图像中检索裁剪区域并为其创建另一个位图。
  5. 调整裁剪位图的大小以适合图像视图大小以在屏幕上显示。
  6. 这种方法适用于我的设备(使用Android 4.3的中兴nuoio)。但是,应用程序在执行步骤1时在Android S4 4.4.4和Note 4上崩溃可能是因为内存不足错误。

    因此,我尝试采用另一种方法创建从源图像中下采样的位图,而不是使用原始大小的位图图像。

    我需要从原始图像中获取裁剪区域的确切位置信息。这就是我没有使用默认裁剪的原因。你可以帮我解决一下提供

    的问题
    1. 用于将原始图像中裁剪图像的边界框的精确坐标导出为矩阵的解决方案。
    2. 如何使用上面提到的方法解决步骤1中的内存不足错误。
    3. 或者通过了解原始图像中裁剪区域的精确坐标来实现图像裁剪的其他方法。

      非常感谢你。

1 个答案:

答案 0 :(得分:0)

对于裁剪图像并获取坐标使用库Edmodo Croper https://github.com/edmodo/cropper

对于内存不足问题,您必须缩小图像尺寸。