如何在 iOS 上使用 kCIInputTransformKey
How to use kCIInputTransformKey on iOS
我正在为 AVMutableVideoComposition
创建 CIFilter
由于它不支持过滤器和图层指令,我尝试直接在过滤器中应用我需要的转换:
filter.setValue(transform, forKey: kCIInputTransformKey)
其中 transform
是 CGAffineTransform
这会抛出异常
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)
编辑:正如弗兰克指出的那样;并非所有过滤器都支持转换!
我正在为 AVMutableVideoComposition
CIFilter
由于它不支持过滤器和图层指令,我尝试直接在过滤器中应用我需要的转换:
filter.setValue(transform, forKey: kCIInputTransformKey)
其中 transform
是 CGAffineTransform
这会抛出异常
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)
编辑:正如弗兰克指出的那样;并非所有过滤器都支持转换!