Mac OS Xcode Swift 2.2将2个或更多NS图像合并为一个新的NSImage

FJC*_*FJC 5 macos nsimage swift2

我正在寻找示例代码,说明如何将NSImages合并到Mac OS(而不是Iphone IOS)的一个新NSImage中。谢谢

aya*_*aio 5

您可以使用Core Image中强大的过滤器来合并两个NSImage。

在此示例中,我们使用Core Image的“ CIAdditionCompositing”过滤器。

首先,从要混合的两个NSImage中创建CIImage,例如使用它们的URL:

let img1 = CIImage(contentsOfURL: yourFirstImageURL)
let img2 = CIImage(contentsOfURL: yourSecondImageURL)
Run Code Online (Sandbox Code Playgroud)

然后初始化CIFilter:

let filter = CIFilter(name: "CIAdditionCompositing")!
filter.setDefaults()
Run Code Online (Sandbox Code Playgroud)

合并两个图像,您可以确定哪个图像位于另一个图像的前面:

filter.setValue(img1, forKey: "inputImage")
filter.setValue(img2, forKey: "inputBackgroundImage")

let resultImage = filter.outputImage
Run Code Online (Sandbox Code Playgroud)

取回NSImage:

let rep = NSCIImageRep(CIImage: resultImage!)
let finalResult = NSImage(size: rep.size)
finalResult.addRepresentation(rep)

finalResult // is your final NSImage
Run Code Online (Sandbox Code Playgroud)

如果需要合并多个图像,只需使用上一个合并操作的结果,然后使用相同的代码将其再次添加到另一个图像。

注意:在此示例中,为清楚起见,我将“强制展开”可选件。在实际的代码中,您应该处理失败的可能性,并安全地打开可选组件。