MacOS 和 Swift 3 - 如何将结果从一个过滤器传递到另一个过滤器
MacOS and Swift 3 - how to pass result from one filter to another
扩展 的问题。我不确定如何将 CIAffineClamp
的结果作为 CIGaussianBlur
的来源传递。以下代码构建得很好,但不会生成结果图像。
guard
let blurFilter = CIFilter(name: "CIGaussianBlur"),
let clampFilter = CIFilter(name: "CIAffineClamp"),
let imageURL = Bundle.main.url(forResource: "my-image", withExtension: "png"),
let ciImage = CIImage(contentsOf: imageURL)
else {
return
}
let transform = AffineTransform.identity
clampFilter.setValue(ciImage, forKey: "inputImage")
clampFilter.setValue(NSAffineTransform(transform: transform), forKey: "inputTransform")
blurFilter.setValue(clampFilter.outputImage, forKey: kCIInputImageKey)
blurFilter.setValue(10, forKey: kCIInputRadiusKey)
guard
let result = blurFilter.outputImage,
let cgImage = context.createCGImage(result, from: result.extent)
else {
// this guard fails in here
return
}
似乎与此问题相同:
CIGaussianBlur and CIAffineClamp on iOS 6
请试试这个:
let cgImage = context.createCGImage(result, from: ciImage.extent)
扩展 CIAffineClamp
的结果作为 CIGaussianBlur
的来源传递。以下代码构建得很好,但不会生成结果图像。
guard
let blurFilter = CIFilter(name: "CIGaussianBlur"),
let clampFilter = CIFilter(name: "CIAffineClamp"),
let imageURL = Bundle.main.url(forResource: "my-image", withExtension: "png"),
let ciImage = CIImage(contentsOf: imageURL)
else {
return
}
let transform = AffineTransform.identity
clampFilter.setValue(ciImage, forKey: "inputImage")
clampFilter.setValue(NSAffineTransform(transform: transform), forKey: "inputTransform")
blurFilter.setValue(clampFilter.outputImage, forKey: kCIInputImageKey)
blurFilter.setValue(10, forKey: kCIInputRadiusKey)
guard
let result = blurFilter.outputImage,
let cgImage = context.createCGImage(result, from: result.extent)
else {
// this guard fails in here
return
}
似乎与此问题相同:
CIGaussianBlur and CIAffineClamp on iOS 6
请试试这个:
let cgImage = context.createCGImage(result, from: ciImage.extent)