在 Android 上即时裁剪图像

Posted

技术标签:

【中文标题】在 Android 上即时裁剪图像【英文标题】:Image cropping on the fly on Android 【发布时间】:2011-11-24 09:03:23 【问题描述】:

我正在为 android 执行 OCR 实用程序,我想即时裁剪图像,我的意思是,拍照并在 JPEG 回调中能够从 Android 返回给您的字节数组中裁剪图像之前保存它或其他任何东西。

最初的问题是我需要从该图像生成位图,如果它具有高分辨率,我会收到“位图超出 VM 预算”错误。由于 OCR 的处理时间,我还想裁剪图像(自动,不允许用户这样做)。

我看到了来自 Android 2.3.3 的 BitmapRegionDecoder 类,这使我想做的所有事情,但我需要使用早期版本。有什么建议吗?

谢谢你们!

【问题讨论】:

【参考方案1】:

假设它不使用任何本机代码,只需将BitmapRegionDecoder 复制到您的项目并使用它而不是系统版本。

【讨论】:

我确实试过了,但它确实使用了本机代码。而且该本地代码与其他库有很多依赖关系,因此使用 NDK 编译它并向后导出似乎不是一种选择......【参考方案2】:

最后,我意识到只有两个可行的选项似乎是将照片存储在 SD 卡中,然后使用它或使用本机库(内存分配是在 Dalvik VM 堆之外完成的,所以你能够使用比 VM 内部多 10 倍的 RAM)。我想我会选择先存储它。似乎更易于操作和维护。

【讨论】:

以上是关于在 Android 上即时裁剪图像的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 相机上使用意图添加功能裁剪图像?

Android:裁剪图像并在 ImageView 上显示

在android中对图像进行手绘裁剪

Android:拉伸和裁剪图像(但仍然是纵横比)

使用“com.android.camera.action.CROP”意图裁剪图像,在某些设备上返回小尺寸位图

裁剪后的Android图像视图仅显示小图像