Core Image编程指南翻译七(获得最佳性能)

2019-01-15  本文已影响0人  酒茶白开水

Core Image提供了许多用于创建图像,上下文和渲染内容的选项。您如何选择完成任务取决于:

性能最佳实践

遵循这些做法以获得最佳性能:

上下文存储了大量的状态信息; 重用它们更有效。

如果您需要同时使用两者,则可以将两者都设置为使用CPU。

CIContext对象的图像大小限制因Core Image是使用CPU还是GPU而异。使用方法inputImageMaximumSize和检查限制outputImageMaximumSize。

性能随输出像素数量而变化。您可以将Core Image渲染为较小的视图,纹理或帧缓冲区。允许Core Animation升级以显示大小。

例如,CIColorCube可以产生类似于CISepiaTone的输出,并且可以更有效地完成。

options = @ {(id)kCVPixelBufferPixelFormatTypeKey:
    @(kCVPixelFormatType_420YpCbCr88iPlanarFullRange)};

您的应用需要色彩管理吗?

默认情况下,Core Image会将所有滤镜应用于浅色线性色彩空间。这提供了最准确和一致的结果。

转换为sRGB和从sRGB转换会增加过滤器的复杂性,并要求Core Image应用这些等式:

rgb = mix(rgb.0.0774,pow(rgb * 0.9479 + 0.05213,2.4),step(0.04045,rgb))
rgb = mix(rgb12.92,pow(rgb * 0.4167)* 1.055  -  0.055,step(0.00313,rgb))

在以下情况下考虑禁用颜色管理

要禁用颜色管理,请将kCIImageColorSpace密钥设置为null。如果您正在使用EAGL上下文,还要在创建EAGL上下文时将上下文颜色空间设置为null。请参阅使用CoreImage上下文构建自己的工作流。

上一篇 下一篇

猜你喜欢

热点阅读