Как мне объединить два или более CIImage

Как объединить два или более 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)

person Golak Sarangi    schedule 13.08.2015    source источник


Ответы (2)


Вы можете попробовать что-то вроде этого:

    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)
    }
person z0kovsky    schedule 05.11.2015

Вы должны использовать CIFilter для этого :)

руководство

person sloik    schedule 13.08.2015
comment
Согласен со Слоиком. Core Image Filters — правильный инструмент для этой задачи. - person Duncan C; 13.08.2015
comment
Извините, я все еще не могу это сделать. CIFilters нуждается в образе для инициализации. Каким изображением я должен его инициализировать и каким должно быть имя фильтра? У меня есть firstCIImage и secondCIImage, и я хочу объединить их для формирования третьего CIImage. Пример кода будет очень полезен - person Golak Sarangi; 15.08.2015
comment
stackoverflow.com/questions/14472415 / - person sloik; 16.08.2015