07-iOS 多媒体技术| 滤镜框架Core Image、GPUImage要点回顾【滤镜链、内置滤镜、自定义滤镜、GPUImage的简单使用等】

💡 原文中文,约44100字,阅读约需105分钟。
📝

内容提要

本文介绍了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类并修改着色器程序来创建自定义滤镜。

🏷️

标签

➡️

继续阅读