使用Swift给NSImage添加模糊效果

4

我正在寻找一种使用Swift为NSImage添加模糊效果的方法。

如果是开发iOS应用程序,UIImage提供了一个方法如下:

applyLightEffectAtFrame:frame

...但我找不到与Cocoa / OSX应用程序相等的东西。

编辑1:我尝试使用CIFilter:

let beginImage = CIImage(data: responseData)
let filter = CIFilter(name: "CIGaussianBlur")
filter.setValue(beginImage, forKey: kCIInputImageKey)
filter.setValue(0.5, forKey: kCIInputIntensityKey)
// HOW CAN I MAKE AN NSIMAGE OUT OF THE CIIMAGE?
let newImage = ???
imageView.image = newImage

核心图像滤镜是许多iOS上可找到的图像效果的通用等效物。 - CodaFi
我编辑了我的问题; 我尝试使用CIFilter,认为我走在正确的道路上,但是我不知道如何将CIImage转换回NSImage? - ixany
使用图像表示法进行转换是一个非常简单的过程。请参见:https://dev59.com/9GQm5IYBdhLWcg3wug4u - CodaFi
2个回答

2
以下内容(摘自这里)对我有效。
(注:该链接无法打开)
    var originalImage = NSImage(named: "myImageName")
    var inputImage = CIImage(data: originalImage?.TIFFRepresentation)
    var filter = CIFilter(name: "CIGaussianBlur")
    filter.setDefaults()
    filter.setValue(inputImage, forKey: kCIInputImageKey)
    var outputImage = filter.valueForKey(kCIOutputImageKey) as CIImage
    var outputImageRect = NSRectFromCGRect(outputImage.extent())
    var blurredImage = NSImage(size: outputImageRect.size)
    blurredImage.lockFocus()
    outputImage.drawAtPoint(NSZeroPoint, fromRect: outputImageRect, operation: .CompositeCopy, fraction: 1.0)
    blurredImage.unlockFocus()

    imageView.image = blurredImage

希望这对新手有所帮助。

2

我通过在 Interface Builder 中为我的 NSImageView 添加内容过滤器来解决了这个问题。


请问您能详细说明一下吗?我在IB中没有看到“内容过滤器”选项。 - de.
好的,发现了 - 在检查器菜单中的最后一个选项卡“fx”中。 - de.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接