我们可以将EffectFactory Class用于较低版本

The*_*uto 8 android image-processing

对于我的新任务,我想使用一些可以提供"Posterize效果"的库.我找到了许多像Aviary SDKjhlabs这样的库,是的,这些都很容易使用,但这些使代码更重.所以我一直在寻找Android的API本身,它可以完成类似的任务.经过大量的RnD,我终于找到了一个节省时间的EffectsFactory,它提供了我想要的相同功能.我也在我的作业中应用了它.但是在API级别14中添加了它的坏处,而我的应用程序应该至少与API级别8兼容.

所以,我的问题是,

我可以将EffectFactory类用于较低版本吗?如果是,那么如何?

或者,如果否,那么我们在Android SDK中是否有任何类似于effectfactory的API?

请避免引用任何库或NDK的open cv库.

Eri*_*ton 3

不,没有一个 Android API 可以对低于 API 14 的图像进行色调分离。即使高于 API 14 也EffectsFactory可能不起作用,正如Android 文档中所述:

有些效果可能并非在所有平台上都可用,因此在创建某种效果之前,应用程序应通过调用 来确认该效果在该平台上受支持isEffectSupported(String)

但是,您可以轻松地自己制作一个轻量级解决方案。海报化是一个简单的过程。例如,JHlabs 的海报化过滤器背后的代码不到50 行(其中大部分都是糖)。站在你的立场上,如果使用第三方库是不可能的,我会毫不犹豫地编写自己的库。

编辑:如果您碰巧要对应用程序从相机拍摄的图像进行色调分离,则还有Camera.Parameters.setColorEffect(),但并非所有设备都支持此功能,正如文档中所述:

例如,应用程序应该getSupportedColorEffects()在调用之前调用setColorEffect(String).

  • 好的!只是为了向阅读此内容的其他人澄清,我在上一条评论中犯了一个错误(而且似乎我无法再编辑它)。正如 @TheLittleNaruto 所说,对于较低的 API 级别,这些类*不会*存在。当设备不支持“EFFECT_POSTERIZE”时,“IllegalArgumentException”将在*更高*的 API 上抛出。 (2认同)