• 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

    需要注意的细节:

  • 相关阅读:
    python virtualenv
    ICMP
    正则表达式
    tcpdump命令
    vim命令
    IP网际协议
    链路层
    python模块学习 logging
    Angular2+如何去除url中的#
    angular5懒加载之模块划分
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/4339941.html
Copyright © 2020-2023  润新知