ios - CIImage 和 CIFilter 实现细节

标签 ios performance core-graphics core-image cifilter

我对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/

相关文章:

ios - 给定一个对象,是否可以获取其类名并将其转换为字符串?

ios - 在 iOS 中是否可以通过 WhatsApp 将文本发送到特定的联系号码?

performance - Spark 机器学习、数据准备性能问题、MLeap

ios - drawRect :(CGrect)rect, 目标中不显示阴影

ios - APNS 紧急通知的适用性和可靠性

ios - 无法将 Parse.com 中存储的 NSData 转换为 NSString?

cocoa - Cocoa (Mac) 中的 HitTest 文本?

ios - 有人可以解释 CGRectGetMaxX 和 CGRectIntersection 的结果吗?

返回查询子集的 mysql 比返回查询的超集慢

java - HashMap<String, Comparable> 与 HashMap<String, Object> 的性能 - Java