07-iOS 多媒体技术| 滤镜框架Core Image、GPUImage要点回顾【滤镜链、内置滤镜、自定义滤镜、GPUImage的简单使用等】
内容提要
本文介绍了GPUImage滤镜库中的一些滤镜和如何自定义滤镜和滤镜组合。示例代码展示了对静态图像进行处理。
延伸解读
Core Image 与 GPUImage 的选型考量
文章指出 Core Image 是苹果官方框架,支持 CPU/GPU 渲染、Metal 加速、图像分析及 RAW 处理,且滤镜链功能更强;而 GPUImage 开源、可定制性高,在低端机型及视频处理上表现更佳。但 GPUImage 处理超过纹理限制的大图时会压缩导致质量损失,Core Image 则采用自动分块处理。开发者需根据项目需求、设备兼容性和图像质量要求权衡选择。
滤镜链的构建与自定义滤镜
GPUImage 通过 GPUImageOutput 和 GPUImageInput 协议串联滤镜链,起点为输入源(如 GPUImagePicture、GPUImageVideoCamera),中间为滤镜(继承 GPUImageFilter),终点为输出组件(如 GPUImageView、GPUImageMovieWriter)。自定义滤镜只需继承 GPUImageFilter 并修改着色器程序,即可实现特定像素处理,灵活支持多层滤镜叠加。
GPUImage 内置滤镜的分类与用途
GPUImage 内置约 125 个滤镜,分为色彩调整、图像处理、色彩混合和效果类四大类。色彩类如亮度、对比度、饱和度调整;图像类包括高斯模糊、裁剪、锐化;混合类支持多种混合模式;效果类提供像素化、素描、卡通等创意效果。开发者可根据场景直接调用,或组合多个滤镜实现复杂效果。
性能优化与线程管理
GPUImage 使用专有的 contextQueue 统一处理所有滤镜操作,避免 OpenGL 上下文的多线程安全问题。其内置缓存模块复用 framebuffer,提升性能。对于大图处理,GPUImage 会压缩至纹理限制内,可能损失质量;而 Core Image 支持自动分块。在视频处理中,GPUImage 表现更佳,尤其适合低端机型。
Q&A
Core Image的主要功能是什么?
Core Image主要用于图像处理、滤镜应用和图像分析,提供丰富的滤镜效果和自定义滤镜的创建。
GPUImage与Core Image有什么区别?
GPUImage在视频处理上表现更佳,支持自定义滤镜,且代码完全开源,而Core Image则是官方框架,支持CPU和GPU渲染。
如何使用Core Image进行实时滤镜预览?
Core Image提供实时预览功能,开发者可以在应用中实时显示滤镜效果,方便用户调整和检查。
GPUImage的滤镜链是如何工作的?
GPUImage的滤镜链由输入源、滤镜和输出组成,允许滤镜效果之间的串联和并联,处理灵活。
Core Image支持哪些图像分析功能?
Core Image支持人脸检测、特征识别、色彩识别和物体识别等图像分析功能。
如何在GPUImage中创建自定义滤镜?
在GPUImage中,开发者可以通过继承GPUImageFilter类并修改着色器程序来创建自定义滤镜。