我需要使用CIAffineClamp
来扩展图像并防止高斯模糊模糊图像的边缘。我在Swift 2中使用以下代码:
let transform = CGAffineTransformIdentity
let clampFilter = CIFilter(name: "CIAffineClamp")
clampFilter.setValue(inputImage, forKey: "inputImage")
clampFilter.setValue(NSValue(CGAffineTransform: transform), forKey: "inputTransform")
在Swift 3中,CGAffineTransformIdentity
已重命名为CGAffineTransform.identity
。我的代码编译但是我在控制台中收到以下错误消息:
[CIAffineClamp inputTransfom] is not a valid object.
Apple网站上的文档指出MacOS上的inputTransform
参数带有属性类型为NSAffineTransform
的{{1}}对象。但是我&#39 ;我不确定如何使用它。
任何帮助都将不胜感激。
答案 0 :(得分:1)
似乎NSAffineTransform
有一个初始值设定项NSAffineTransform.init(transform:)
,需要AffineTransform
。
请试试这个:
let transform = AffineTransform.identity
let clampFilter = CIFilter(name: "CIAffineClamp")!
clampFilter.setValue(inputImage, forKey: "inputImage")
clampFilter.setValue(NSAffineTransform(transform: transform), forKey: "inputTransform")
或者最后一行可以是:
clampFilter.setValue(transform, forKey: "inputTransform")
重要
Swift叠加到Foundation框架提供了
AffineTransform
结构,与NSAffineTransform
桥接 类。AffineTransform
值类型提供与以下相同的功能NSAffineTransform
引用类型,可以使用这两种类型 在与Objective-C API交互的Swift代码中可互换使用。 这种行为类似于Swift桥接标准字符串的方式, 数字和集合类型到相应的Foundation 类。