我对Core Image系统的底层实现有疑问。我在彼此之上添加了一些 CIImages
。不是很多,大概有五六个吧。为了节省内存和性能,它们都裁剪了透明像素。然后按偏移绘制它们,因此我使用 @"CIAffineTransform"
过滤器来定位它们。
CIFilter* moveFilter = [CIFilter filterWithName:@"CIAffineTransform"];
我的问题是: moveFilter.outputImage 是否真的生成新图像,或者它是否生成稍后用于绘制实际图像的“渲染设置”?
(如果是第一个,那就意味着我有效地渲染了图像两次。这将是 Core Image API 中的一个巨大缺陷,很难相信 Apple 是这样创建的。)
最佳答案
过滤器不产生任何东西。 outputImage
不生成任何东西。 CIImage 不生成任何东西。您所做的只是构建一个过滤器链。
除非您明确要求渲染到位图,否则渲染不会发生。您可以通过以下两种方式之一执行此操作:
调用 CIContext
createCGImage:fromRect:
。实际将基于 CIImage 的 UIImage 绘制到图形上下文中。
关于ios - CIImage 和 CIFilter 实现细节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23833626/