【问题标题】:How to use kCIInputTransformKey on iOS如何在 iOS 上使用 kCIInputTransformKey
【发布时间】:2019-02-05 08:23:05
【问题描述】:

我正在为AVMutableVideoComposition 创建一个CIFilter

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

    filter.setValue(transform, forKey: kCIInputTransformKey)

其中transformCGAffineTransform

这会引发异常

由于未捕获的异常“NSUnknownKeyException”而终止应用程序, 原因: '[ setValue:forUndefinedKey:]:这个类不是键值 键 inputTransform 的编码兼容。'

现在医生说

指定转换的 NSAffineTransform 对象的键 申请。

NSAffineTransform 在 iOS 上不存在。

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

【问题讨论】:

    标签: ios avfoundation core-image cgaffinetransform


    【解决方案1】:

    您需要将转换包装在NSValue

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

    【讨论】:

    • 它仍然为我生成异常
    • 您使用的是什么过滤器?过滤器似乎没有输入转换属性。
    • 让 filter = CIFilter(name: "CISourceOverCompositing")!
    • 是的,这个只有输入和背景两个参数。见这里:developer.apple.com/library/archive/documentation/…
    • 我现在明白了!谢谢你:)
    【解决方案2】:

    我的解决方案是直接在过滤器中应用转换。

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

    request.sourceImage.transformed(by: transform)
    

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

    【讨论】:

      猜你喜欢
      • 2017-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 2014-10-24
      • 1970-01-01
      • 2019-12-06
      • 2011-04-27
      相关资源
      最近更新 更多