swift2 – Swift – GLKit查看CIFilter图像

swift2 – Swift – GLKit查看CIFilter图像,第1张

概述我正在尝试使用GLIKit View来修改图像.到目前为止,我所有的CIFilters工作都很好,除了CILineOverlay它呈现黑色视图.如果我使用任何其他效果,它运作良好. 为什么CILineOverlay没有显示? class ImageView: GLKView { let clampFilter = CIFilter(name: "CIAffineClamp")! l 我正在尝试使用GliKit VIEw来修改图像.到目前为止,我所有的CIFilters工作都很好,除了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: 
let background = CIImage(color: CIcolor(color: UIcolor.whitecolor()))        .imageByCropPingToRect(inputCIImage.extent)    let finalimage = filter.outputimage!        .imageByCompositingOverImage(background)
)! } } } @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) } }}
解决方法 Apple文档指出“未概述的图像部分是透明的.” – 这意味着您在黑色背景上绘制黑色线条.您可以简单地将滤镜的输出合成为白色背景,以使线条显示:

总结

以上是内存溢出为你收集整理的swift2 – Swift – GLKit查看CIFilter图像全部内容,希望文章能够帮你解决swift2 – Swift – GLKit查看CIFilter图像所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1005169.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-22
下一篇2022-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存