如何将两个或多个CIImage合并?

4

我该如何将两个或多个CIImage合并成另一个图像?我尝试使用ciContext.drawImage方法。如何从中获取CGImage?我的理解是,我正在从上下文中写入图像,应该能够获得一张图片。如果我有任何误解,请告诉我。

let eaglContext = EAGLContext(API: .OpenGLES2)
let ciContext = CIContext(EAGLContext: eaglContext)
ciContext.drawImage(firstCIImage, inRect: firstRect, fromRect: secondRect)
ciContext.drawImage(secondCIImage, inRect: secondRect, fromRect: secondRect)
2个回答

4
您可以尝试像这样做:

您可以尝试类似以下的操作:

    var outputImage: CIImage?
    let images : Array<CIImage> = [] // add all your CIImages that you'd like to combine
    for image in images {
        outputImage = outputImage == nil ? image : image.imageByCompositingOverImage(outputImage!)
    }
    var cgImage: CGImageRef
    if let image = outputImage {
        let eaglContext = EAGLContext(API: .OpenGLES2)
        let ciContext = CIContext(EAGLContext: eaglContext)
        cgImage = ciContext.createCGImage(image, fromRect: image.extent)
    }

1
你可以使用CIFilter来实现这个功能 :)
这里有一个教程

我同意sloik的观点。核心图像滤镜是完成这项任务的正确工具。 - Duncan C
抱歉,我仍然无法做到这一点。CIFilters需要初始化图像。我应该用哪个图像进行初始化?滤镜名称应该是什么?我有第一个CIImage和第二个CIImage,我想将它们组合成第三个CIImage。提供一个代码示例将非常有帮助。 - Golak Sarangi
https://dev59.com/-23Xa4cB1Zd3GeqPf4tj - sloik

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