背景
我正在开发一个应用程序,在某些时候它有一个巨大的位图,它需要在上面使用人脸检测,所以我使用FaceDetector API
问题
人脸检测 API 对其输入位图有限制:
我做了什么
因为我以后需要原始位图,所以我将它存储到一个文件中。
在那之后,我回收了原始位图,并从文件中加载了一个临时的,具有正确的配置,但遗憾的是,它并不总是有效,因为我需要使用均匀的宽度,而原始位图并不总是有一个均匀的宽度。
我试过告诉面部检测 API 使用“width-1”作为宽度,但它没有用。它说“java.lang.IllegalArgumentException:位图大小与初始化不匹配”。我什至不明白为什么它需要如此奇怪的宽度限制,以及如果它已经有了位图,为什么它需要宽度和高度的参数......
问题
我应该怎么办?
是否可以使其与奇数宽度位图一起使用,并且可能忽略一整列像素?
我问这个的原因是因为位图非常大,如果我将它克隆到一个具有相似大小(宽度均匀)的新位图,我可以很容易地在某些设备上获得 OOM。
我知道我可以使用 JNI 进行扩展(类似于我前段时间在这里写的一篇文章),但我希望我能找到一种更好、更少硬核的方式来实现同样的目标。
如果没有其他办法,也许android有一个可以提供帮助的JNI函数?