IOS 图片滤镜效果处理

来源:互联网 发布:手机数据损坏如何恢复 编辑:程序博客网 时间:2024/05/16 15:42

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;}

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

原创粉丝点击