美文网首页
图片滤镜 之 CoreImage

图片滤镜 之 CoreImage

作者: 小凡凡520 | 来源:发表于2019-10-08 09:22 被阅读0次
一、框架介绍
a)是一个图片框架,它基于OpenGL顶层创建,底层则用着色器来处理图像
b)他利用了GPU基于硬件加速来处理图像
c)CoreImage中有很多滤镜
d)它们能够一次给予一张图像或者视频帧多种视觉效果 -> 滤镜链
e)而且滤镜可以连接起来组成一个滤镜链 把滤镜效果叠加起来处理图像
二、背景

CoreImage是iOS5新加入的一个图像处理框架, 提供了强大高效的图像处理功能, 用来对基于像素的图像进行操作与分析

内置了很多强大的滤镜(Filter), 这些Filter提供了各种各样的效果, 并且还可以通过滤镜链将各种效果的Filter叠加起来形成强大的自定义效果

  • 图片色彩滤镜处理
  • 图片高斯模糊滤镜处理
/**
 *  图片高斯模糊滤镜处理
 *
 *  @param inputImage 原始需要处理的图片
 *  @param radius     迷糊值(默认为 10)
 *
 *  @return UIImage
 */
fileprivate func imageGaussianBlurFilterWithImage(inputImage:UIImage,radius:Float) ->UIImage?  {
    
    // 网络图片
    CIImage(contentsOf: URL(string: "xxxx") ?? URL(fileURLWithPath: ""))
    
    var outputImage = inputImage
    //创建上下文
    let context = CIContext(options: nil)
    //创建滤镜(高斯模糊)
    let filter = CIFilter(name: "CIGaussianBlur")
    
    guard let cgImage = inputImage.cgImage else {
        return nil
    }
    //创建过滤源图片
    var image = CIImage(cgImage: cgImage)
    filter?.setValue(image, forKey: kCIInputImageKey)
    //设置过滤参数
    filter?.setValue(NSNumber(value: radius), forKey: "inputRadius")
    //取得输出图片显示或保存
    
    guard let ciImg = filter?.value(forKey: kCIOutputImageKey) as? CIImage else {
        return nil
    }
    image = ciImg
    
    guard let temp = context.createCGImage(image, from: image.extent) else {
        return nil
    }
    
    outputImage = UIImage(cgImage: temp)
    
    return outputImage
}
  • 调整图片内容的颜色
guard let cgImage = UIImage(named: "1.jpg")?.cgImage else {
    return
}
// 原图
let inputImage = CIImage(cgImage: cgImage)

for i in CIFilter.filterNames(inCategory: kCICategoryDistortionEffect) {
    // 查询效果
    print(i)
}

/*
 1.查询 效果分类中 包含什么效果:filterNamesInCategory:
 2.查询 使用的效果中 可以设置什么属性(KVC) attributes
 
 使用步骤
 1.需要添加滤镜的源图
 2.初始化一个滤镜 设置滤镜(根据查询到的属性来设置)
 3.把滤镜 输出的图像 和滤镜  合并 CIContext -> 得到一个合成之后的图像
 4.展示
 */
let filter = CIFilter(name: "CIColorMonochrome")

for i in (filter?.attributes ?? [:]) {
    // 查询属性
    print(i)
}

//这个属性是必须赋值的,假如你处理的是图片的话
filter?.setValue(inputImage, forKey: kCIInputImageKey)

// 通过改变颜色值,调整想要的颜色
let color = CIColor(red: 0.759, green: 1, blue: 0.592, alpha: 1)
filter?.setValue(color, forKey: kCIInputColorKey)
//CIContext
let context = CIContext(options: nil)

guard let outPutImage = filter?.outputImage else {
    return
}
guard let image = context.createCGImage(outPutImage, from: outPutImage.extent) else {
    return
}
resultImgView.image = UIImage(cgImage: image)
  • 改变hud (饱和度)
guard let cgImage = UIImage(named: "1.jpg")?.cgImage else {
    return
}
// 原图
let imgSource = CIImage(cgImage: cgImage)
//创建基于GPU的CIContext对象实例
let context = CIContext(options: nil)
//创建滤镜
let filterHueAdjust = CIFilter(name: "CIHueAdjust")

//设置过滤器参数
filterHueAdjust?.setValue(imgSource, forKey: kCIInputImageKey)
filterHueAdjust?.setValue(NSNumber(value: 0.5), forKey: "inputAngle")

//得到过滤后的图片
guard let imgOutput = filterHueAdjust?.outputImage else {
    return
}

//转换图片
guard let imgRef = context.createCGImage(imgOutput, from: imgOutput.extent) else {
    return
}
let imgNew = UIImage(cgImage: imgRef)

resultImgView.image = imgNew

相关文章

  • 图片滤镜 之 CoreImage

    一、框架介绍 二、背景 CoreImage是iOS5新加入的一个图像处理框架, 提供了强大高效的图像处理功能, 用...

  • iOS给图片添加滤镜&使用openGLES动态渲染图片

    给图片增加滤镜有这两种方式: CoreImage / openGLES 下面先说明如何使用CoreImage给图片...

  • iOS 图片模糊效果

    1.使用CoreImage中的模糊滤镜原始效果图如下:这里写图片描述 CoreImage的实现: UIImage ...

  • iOS 模糊效果的使用

    1. CoreImage 中的模糊滤镜 a. coreImage是苹果用来简化图片处理的框架 b. CIImage...

  • iOS 使用自带CIFilter实现滤镜效果

    1. 有哪些滤镜效果 使用苹果自带的CoreImage框架对图片进行处理,用CoreImage框架里的CIFilt...

  • CoreImage(一)简单介绍

    CoreImage(一)简单介绍 CoreImage框架是iOS处理图像的框架,主要用处可以给图片添加滤镜效果和图...

  • 滤镜之CoreImage

    CoreImage是苹果自带的关于图像处理的框架,不仅可以做滤镜,还可以做人脸识别,我们今天先来简单的了解一下滤镜...

  • 多彩的图片 (2)-- CoreImage滤镜链

    如果你还不了解CoreImage滤镜的话请移步上一遍文章多彩的图片(1) -- Core Image 滤镜 我们这...

  • CoreImage滤镜

    先看原图 然后马赛克(心中无码则处处高清)之后的效果 上代码了 再来个多种滤镜组合使用的效果 老规矩,继续代码 多...

  • CoreImage 滤镜

    1、CoreImage介绍 coreImage是IOS5中新加入的一个Objective-c的框架,提供了强大高效...

网友评论

      本文标题:图片滤镜 之 CoreImage

      本文链接:https://www.haomeiwen.com/subject/obmpbftx.html