IOS 图片滤镜效果处理

IOS 图片滤镜效果处理

图片色彩滤镜处理

/**
 *  图片色彩滤镜处理
 *
 *  @param _inputImage 原始需要处理的图片
 *  @param _saturation 饱和度(0.f - 2.f)
 *  @param _brightness 亮  度(-1 - 1)
 *  @param _contrast   对比度(0.f - 2.f)
 *
 *  @return UIImage
 */
+(UIImage *)imageColorControlsFilterSet:(UIImage *)_inputImage andSaturation:(float)_saturation andBrightness:(float)_brightness withContrast:(float)_contrast{

    UIImage *outputImage = _inputImage;

    // [S] 滤镜处理
    @autoreleasepool {
        //创建图像上下文 CIContext
        CIContext *_context = [CIContext contextWithOptions:nil];

        //创建滤镜CIFiter
        CIFilter *_colorControlsFilter = [CIFilter filterWithName:@"CIColorControls"];

        //创建过滤源图片CIImage
        CIImage *_image = [CIImage imageWithCGImage:_inputImage.CGImage];
        [_colorControlsFilter setValue:_image forKey:kCIInputImageKey];

        // [S] 设置滤镜参数【可选】
        //调整饱和度(0.f - 2.f)
        [_colorControlsFilter setValue:[NSNumber numberWithFloat:_saturation] forKey:@"inputSaturation"];

        //调整亮度(-1.f - 1.f)
        [_colorControlsFilter setValue:[NSNumber numberWithFloat:_brightness] forKey:@"inputBrightness"];

        //对比度(0.f - 2.f)
        [_colorControlsFilter setValue:[NSNumber numberWithFloat:_contrast] forKey:@"inputContrast"];
        // [E] 设置滤镜参数【可选】

        //取得输出图片显示或保存
        _image = [_colorControlsFilter outputImage];
        CGImageRef temp = [_context createCGImage:_image fromRect:[_image extent]];
        outputImage = [UIImage imageWithCGImage:temp];

        //释放CGImage对象
        CGImageRelease(temp);

    }
    // [E] 滤镜处理
    
    return outputImage;
    
}
图片高斯模糊滤镜处理
/**
 *  图片高斯模糊滤镜处理
 *
 *  @param _inputImage 原始需要处理的图片
 *  @param _radius     迷糊值(默认为 10)
 *
 *  @return UIImage
 */
+(UIImage *)imageGaussianBlurFilterWithImage:(UIImage *)_inputImage andRadius:(float)_radius{

    UIImage *outputImage = _inputImage;

    @autoreleasepool {
        //创建上下文
        CIContext *context = [CIContext contextWithOptions:nil];

        //创建滤镜(高斯模糊)
        CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

        //创建过滤源图片
        CIImage *image = [[CIImage alloc] initWithCGImage:_inputImage.CGImage];
        [filter setValue:image forKey:kCIInputImageKey];

        //设置过滤参数
        [filter setValue:[NSNumber numberWithFloat:_radius] forKey:@"inputRadius"];

        //取得输出图片显示或保存
        image = [filter valueForKey:kCIOutputImageKey];
        CGImageRef temp = [context createCGImage:image fromRect:[image extent]];
        outputImage = [UIImage imageWithCGImage:temp];

        //释放
        CGImageRelease(temp);
    }

    return outputImage;
}
/**
 *  图片高斯模糊滤镜处理
 *
 *  @param _inputImage 原始需要处理的图片
 *  @param _radius     迷糊值(默认为 10)
 *
 *  @return UIImage
 */
+(UIImage *)imageGaussianBlurFilterWithUrl:(NSURL *)_imgUrl andRadius:(float)_radius{

    UIImage *outputImage;
    CIImage *image = [CIImage imageWithContentsOfURL:_imgUrl];

    //创建上下文
    CIContext *context = [CIContext contextWithOptions:nil];

    //创建滤镜(高斯模糊)
    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];

    //创建过滤源图片
    [filter setValue:image forKey:kCIInputImageKey];

    //设置过滤参数
    [filter setValue:[NSNumber numberWithFloat:_radius] forKey:@"inputRadius"];

    //取得输出图片显示或保存
    image = [filter valueForKey:kCIOutputImageKey];
    CGImageRef temp = [context createCGImage:image fromRect:[image extent]];
    outputImage = [UIImage imageWithCGImage:temp];

    //释放
    CGImageRelease(temp);
    
    return outputImage;
}

  以上方法只是抛砖引玉,更多详细介绍请自行查找资料,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追夢秋陽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值