Meh*_*tri 4 iphone opengl-es core-graphics objective-c ios
有没有办法在iPhone应用程序PhotoTwist中使用OpenGL ES在UIImage上创建像凹痕,捏,扭曲,挤压等效果?
这样做是否有任何参考或指导?我不想要代码,只是如何做到这一点的参考.
Bra*_*son 15
执行此类图像处理的最高效方法是使用OpenGL ES 2.0着色器.再一次,如果我可以指向您的GPUImage框架,它可以执行您描述的许多失真操作.对于那些缺失的,您可以编写自己的片段着色器.
我在那里的效果是凸起的凸起失真(使用GPUImageBulgeDistortionFilter):

凹陷失真(使用前一个滤波器的反转比例参数):

漩涡扭曲(使用GPUImageSwirlFilter):

最后,捏缩乱(使用GPUImagePinchDistortionFilter):

如果您查看用于每个过滤器的着色器,您会发现它们之间的数学非常相似.您应该能够调整它以从同一个基础生成您自己的自定义效果.
将这些过滤器应用于UIImages相当容易.如果您只想使用一个过滤器,则可以执行以下操作:
UIImage *inputImage = [UIImage imageNamed:@"test.jpg"];
GPUImageBulgeDistortionFilter *stillImageFilter = [[GPUImageBulgeDistortionFilter alloc] init];
UIImage *quickFilteredImage = [stillImageFilter imageByFilteringImage:inputImage];
Run Code Online (Sandbox Code Playgroud)
这将从磁盘创建UIImage,使用OpenGL ES过滤它,并返回一个过滤的UIImage供您使用.如果您想要执行更高级的链式效果,可以使用GPUImagePicture和自定义过滤器管道,或者可以使用其他输入源过滤实时摄像机视频或电影.
此项目的源代码可在BSD许可证的上述链接中获得,因此您可以深入了解如何与OpenGL ES之间传输数据以及如何执行这些类型的过滤器.
| 归档时间: |
|
| 查看次数: |
6756 次 |
| 最近记录: |