提供允许您将各种视觉效果应用于图像和视频的类。 例如,您可以轻松修复红眼,将图像转换为灰度,调整亮度,调整饱和度,旋转图像,应用鱼眼效果等等。 系统在GPU上执行所有效果处理以获得最佳性能。
为了获得最佳性能,效果直接应用于OpenGL纹理,因此您的应用程序在使用效果API之前必须具有有效的OpenGL上下文。 您应用效果的纹理可能来自位图,视频甚至相机。 但是,纹理必须符合某些限制:
GL_TEXTURE_2D
texture image一个Effect
对象定义了可应用于图像帧的单个媒体效果。 创建Effect
的基本工作流程是:
EffectContext.createWithCurrentGlContext()
from your OpenGL ES 2.0 context.EffectContext
to call EffectContext.getFactory()
, which returns an instance of EffectFactory
.createEffect()
, passing it an effect name from @link android.media.effect.EffectFactory}, such as EFFECT_FISHEYE
or EFFECT_VIGNETTE
.您可以通过调用setParameter()
并传递参数名称和参数值来调整效果的参数。 每种类型的效果都接受不同的参数,这些参数以效果名称记录。 例如, EFFECT_FISHEYE
具有用于一个参数scale
失真。
要在纹理应用效果,呼叫apply()
上Effect
,并通过在输入纹理,其宽度和高度,并且输出纹理。 输入纹理必须绑定到GL_TEXTURE_2D
纹理图像(通常通过调用glTexImage2D()
函数完成)。 您可以提供多个mipmap级别。 如果输出纹理未绑定到纹理图像,它将自动被效果绑定为GL_TEXTURE_2D
并且具有一个mipmap级别(0),该级别将与输入大小相同。
注意:保证EffectFactory
中列出的所有效果EffectFactory
支持。 但是,所有设备都不支持从外部库提供的其他一些效果,因此您必须首先检查是否通过调用isEffectSupported()
来支持外部库所需的效果。
EffectUpdateListener | 一些效果可能会发出回调来通知主机效果状态的变化。 |
Effect | 效果是可应用于图像帧的高性能转换。 |
EffectContext | EffectContext保留所有必要的状态信息,以在Open GL ES 2.0上下文中运行Effects。 |
EffectFactory | EffectFactory类定义可用效果的列表,并提供检查和实例化它们的功能。 |