如何在 iOS 上使用 kCIInputTransformKey

How to use kCIInputTransformKey on iOS

我正在为 AVMutableVideoComposition

创建 CIFilter

由于它不支持过滤器和图层指令,我尝试直接在过滤器中应用我需要的转换:

    filter.setValue(transform, forKey: kCIInputTransformKey)

其中 transformCGAffineTransform

这会抛出异常

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[ setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key inputTransform.'

现在医生说

A key for an NSAffineTransform object that specifies a transformation to apply.

但是 NSAffineTransform 在 iOS 上不存在。

如何使用CGAffineTransform或iOS,或者有什么替代品可以代替它?

您需要将转换包装在 NSValue:

filter.setValue(NSValue(cgAffineTransform: transform), forKey: kCIInputTransformKey)

我的解决方案是直接在滤镜中应用变换。

这可以通过将其应用于源图像来完成。

request.sourceImage.transformed(by: transform)

编辑:正如弗兰克指出的那样;并非所有过滤器都支持转换!