swift2 - स्विफ्ट-जीएलकिट देखें सीआईफ़िल्टर छवि



glkit cifilter (1)

ऐप्पल डॉक्स कहते हैं, "छवि के हिस्से जो रेखांकित नहीं हैं, वे पारदर्शी हैं।" - इसका मतलब है कि आप एक काले रंग की पृष्ठभूमि पर काले रंग की रेखाएं चित्रित कर रहे हैं। आप लाइनों को प्रदर्शित करने के लिए एक सफेद पृष्ठभूमि पर फ़िल्टर से आउटपुट को मिश्रित कर सकते हैं:

    let background = CIImage(color: CIColor(color: UIColor.whiteColor()))
        .imageByCroppingToRect(inputCIImage.extent)

    let finalImage = filter.outputImage!
        .imageByCompositingOverImage(background)

मैं एक छवि को संशोधित करने के लिए एक GLIKit View का उपयोग करने की कोशिश कर रहा हूं। अब तक की क्लास, सीआईएलईएवरले को छोड़कर सभी सीआईफ़िल्टरों को अच्छी तरह से काम कर CILineOverlay यह एक काला दृश्य प्रदान करता है अगर मैं किसी अन्य प्रभाव का उपयोग करता हूं तो यह अच्छी तरह से काम करता है

CILineOverlay क्यों नहीं दिखा रहा है?

class ImageView: GLKView {
    let clampFilter = CIFilter(name: "CIAffineClamp")!
    let blurFilter = CIFilter(name: "CILineOverlay")!
    let ciContext:CIContext

    override init(frame: CGRect) {
        let glContext = EAGLContext(API: .OpenGLES2)
        ciContext = CIContext(
            EAGLContext: glContext,
            options: [
                kCIContextWorkingColorSpace: NSNull()
            ]
        )
        super.init(frame: frame, context: glContext)
        enableSetNeedsDisplay = true
    }

    required init(coder aDecoder: NSCoder) {
        let glContext = EAGLContext(API: .OpenGLES2)
        ciContext = CIContext(
            EAGLContext: glContext,
            options: [
                kCIContextWorkingColorSpace: NSNull()
            ]
        )
        super.init(coder: aDecoder)!
        context = glContext
        enableSetNeedsDisplay = true
    }

    @IBInspectable var inputImage: UIImage? {
        didSet {
            inputCIImage = inputImage.map { CIImage(image: $0)! }
        }
    }

    @IBInspectable var blurRadius: Float = 0 {
        didSet {
            //blurFilter.setValue(blurRadius, forKey: "inputIntensity")
            setNeedsDisplay()
        }
    }

    var inputCIImage: CIImage? {
        didSet { setNeedsDisplay() }
    }

    override func drawRect(rect: CGRect) {
        if let inputCIImage = inputCIImage {
            clampFilter.setValue(inputCIImage, forKey: kCIInputImageKey)
            blurFilter.setValue(clampFilter.outputImage!, forKey: kCIInputImageKey)
            let rect = CGRect(x: 0, y: 0, width: drawableWidth, height: drawableHeight)
            ciContext.drawImage(blurFilter.outputImage!, inRect: rect, fromRect: inputCIImage.extent)
        }
    }
}