
为什么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图像所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)