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

Posted

技术标签:

【中文标题】Android中自定义图像裁剪的实现【英文标题】:Implementation for custom image cropping in Android 【发布时间】:2015-06-23 19:14:04 【问题描述】:

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

步骤如下:

    从源创建原始大小的位图(使用 uri)。这 原始尺寸约为 4000x3000,太大了。 用户定义裁剪区域以提取 ROI,从而调整原始图像的大小以适合 ImageView。 (ImageView 大小约为 700x700) 记录边界框在 ImageView 中的位置。 从原始图像中检索裁剪区域并为其创建另一个位图。 调整裁剪位图的大小以适合 imageview 的大小,以便在屏幕上显示。

这种方法在我的设备(Android 4.3 的 ZTE nuoio)上运行良好。但是,该应用在运行第 1 步时在装有 Android 4.4.4 和 Note 4 的三星 S4 上崩溃,可能是因为内存不足错误。

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

我需要从原始图像中获取裁剪区域的确切位置信息。这就是我不使用默认裁剪的原因。你能帮我解决我的案子吗

    将原始图像中裁剪图像的边界框的精确坐标导出为矩阵的解决方案。 如何使用我上面提到的方法解决步骤 1 中的内存不足错误。

或通过知道原始图像的裁剪区域的确切坐标来实现图像裁剪的其他方法。

非常感谢。

【问题讨论】:

有many image cropping libraries for Android。一个可能会满足您的需求,也可能会为您提供解决问题的想法。 【参考方案1】:

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

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

【讨论】:

以上是关于Android中自定义图像裁剪的实现的主要内容,如果未能解决你的问题,请参考以下文章

Android 上的自定义裁剪

Android 自定义相机 - 在矩形内裁剪图像

是否可以自定义 android 的相机裁剪意图视图?

图像的自定义裁剪无法正常工作

Android 中自定义ViewGroup实现流式布局的效果

Android 中自定义View,实现小球往复运动