正如您所说,Core Image 目前的功能在 iOS 上有点受限。特别是,缺少像您在桌面上发现的自定义内核令人失望。您列出的其他替代方案(GLImageProcessing 除外,它不能进行这种过滤)都是受 CPU 限制的库,并且对于在移动设备上进行实时过滤来说太慢了。
但是,我可以向您指出我刚刚推出的一个名为GPUImage的开源框架,因为我找不到可以让您实现自定义效果的东西。顾名思义,GPUImage 使用 OpenGL ES 2.0 着色器对静止图像和视频进行 GPU 加速处理。您可以使用这些编写自己的自定义效果,因此您应该能够做任何您能想到的事情。该框架本身是Objective-C,并且具有相当简单的界面。
作为失真过滤器的示例,以下着色器(基于Danny Pflughoeft 回答中的代码)会产生一种鱼眼效果:
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
const mediump float bulgeFactor = 0.5;
void main()
{
mediump vec2 processedTextureCoordinate = textureCoordinate - vec2(0.5);
mediump float radius = processedTextureCoordinate.x * processedTextureCoordinate.x + processedTextureCoordinate.y * processedTextureCoordinate.y;
mediump vec2 distortedCoordinate = vec2(pow(radius, bulgeFactor)) * processedTextureCoordinate + vec2(0.5);
gl_FragColor = texture2D(inputImageTexture, distortedCoordinate);
}
这会对视频流产生这种效果:

在我的基准测试中,GPUImage 在 iPhone 4 上处理图像的速度比 Core Image 快 4 倍(比 CPU 处理速度快 6 倍),视频处理速度比 Core Image 快 25 倍(比 CPU 快 70 倍)。即使在最坏的情况下,它也能匹配 Core Image 的处理速度。
该框架仍然相当新,所以我现在拥有的库存过滤器数量很少,但我很快会添加更多。同时,您可以编写自己的自定义失真着色器来处理您的图像,并且所有内容的源代码都可供您根据需要进行调整。我关于它的介绍性文章有更多关于如何在你的应用程序中使用它的细节。