iOS8 CIGlassDistortion滤镜的使用

iOS8 CIGlassDistortion滤镜的使用

技术分享

此为CoreImage滤镜的使用

素材

技术分享

效果

技术分享

混合用图片

技术分享

源码:

//
//  ViewController.m
//  CIGlass
//
//  Created by XianMingYou on 15/3/15.
//  Copyright (c) 2015年 XianMingYou. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong) UIImage *orgImage;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 设置背景色
    self.view.backgroundColor = [UIColor blackColor];
    
    
    self.orgImage = [UIImage imageNamed:@"bg.png"];
    
    
    // 数据源 + 设置
    CIImage *ciImage = [[CIImage alloc] initWithImage:self.orgImage];
    NSDictionary *params = @{
                             kCIInputImageKey: ciImage,
                             };
    
    // 初始化滤镜
    CIFilter *filter = [CIFilter filterWithName:@"CIGlassDistortion"
                            withInputParameters:params];
    [filter setDefaults];
    

    // 输入变形参数
    if ([filter respondsToSelector:NSSelectorFromString(@"inputTexture")]) {
        CIImage *ciTextureImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"grassdistortion.png"]];
        [filter setValue:ciTextureImage forKey:@"inputTexture"];
    }
    
    // 创建上下文 + 输出图片
    CIContext *context   = [CIContext contextWithOptions:nil];
    CIImage *outputImage = [filter outputImage];
    
    // 获取图片
    CGImageRef cgImage   = [context createCGImage:outputImage
                                         fromRect:[outputImage extent]];
    
    // 获取图片
    UIImage *image = [UIImage imageWithCGImage:cgImage];
    
    // 释放资源
    CGImageRelease(cgImage);
    
    // 加载图片
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame        = self.view.bounds;
    [self.view addSubview:imageView];
}

@end

需要注意的细节:

技术分享

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。