MacOS和Swift 3采用CIAffineClamp过滤器

时间:2016-10-09 07:27:03

标签: swift macos nsimage

我需要使用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 ;我不确定如何使用它。

任何帮助都将不胜感激。

1 个答案:

答案 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")

NSAffineTransform

  

重要

     

Swift叠加到Foundation框架提供了   AffineTransform结构,与NSAffineTransform桥接   类。 AffineTransform值类型提供与以下相同的功能   NSAffineTransform引用类型,可以使用这两种类型   在与Objective-C API交互的Swift代码中可互换使用。   这种行为类似于Swift桥接标准字符串的方式,   数字和集合类型到相应的Foundation   类。