滤镜

原创 2015年11月18日 20:55:13
#import "ViewController.h"

#define ScreenWidth [self.view bounds].size.width
#define ScreenHeight [self.view bounds].size.height

@interface ViewController () <UIPickerViewDataSource, UIPickerViewDelegate>
{
    NSMutableArray *_pickerData;//关系选择器数组
    UIPickerView *pickerView;//关系选择器
    UIImageView *imageView;//imageView
    UIImage *originImage;//源图片
}

@end




@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    //单击手势
     UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showPicker)];
    tapGesture.numberOfTapsRequired = 1;//手势敲击的次数
    [self.view addGestureRecognizer:tapGesture];

    //源图片
    originImage = [[UIImage alloc] init];
    originImage = [UIImage imageNamed:@"091504276044781"];

    //imageView
    imageView = [[UIImageView alloc] initWithImage:originImage];
    imageView.frame = self.view.frame;
    imageView.center = self.view.center;
    [self.view addSubview:imageView];

    _pickerData = [[NSMutableArray alloc] initWithObjects:
                   @"OriginImage",
                   @"CIPhotoEffectMono",
                   @"CIPhotoEffectChrome",
                   @"CIPhotoEffectFade",
                   @"CIPhotoEffectInstant",
                   @"CIPhotoEffectNoir",
                   @"CIPhotoEffectProcess",
                   @"CIPhotoEffectTonal",
                   @"CIPhotoEffectTransfer",
                   @"CISRGBToneCurveToLinear",
                   nil];
    [self addPickerView];
}


#pragma mark 滤镜处理事件
- (void)fliterEvent:(NSString *)filterName
{
    if ([filterName isEqualToString:@"OriginImage"]) {
        imageView.image = originImage;

    }else{
        //将UIImage转换成CIImage
        CIImage *ciImage = [[CIImage alloc] initWithImage:originImage];

        //创建滤镜
        CIFilter *filter = [CIFilter filterWithName:filterName keysAndValues:kCIInputImageKey, ciImage, nil];

        //已有的值不改变,其他的设为默认值
        [filter setDefaults];

        //获取绘制上下文
        CIContext *context = [CIContext contextWithOptions:nil];

        //渲染并输出CIImage
        CIImage *outputImage = [filter outputImage];

        //创建CGImage句柄
        CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]];

        //获取图片
        UIImage *image = [UIImage imageWithCGImage:cgImage];

        //释放CGImage句柄
        CGImageRelease(cgImage);

        imageView.image = image;
    }

}

#pragma mark 开关选择器
- (void)showPicker
{
    static int i = 0;
    i++;

    if (i % 2 == 1) {
        //picker显示
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.3];//动画时间0.3s
        pickerView.frame = CGRectMake(0, ScreenHeight - CGRectGetHeight(pickerView.bounds), ScreenWidth, CGRectGetHeight(pickerView.bounds));
        [UIView commitAnimations];
    }else{
        //picker关闭
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:0.3];//动画时间0.3s
        pickerView.frame = CGRectMake(0, ScreenHeight, ScreenWidth, CGRectGetHeight(pickerView.bounds));
        [UIView commitAnimations];
    }
}

#pragma mark - 选择器 ---懒加载

- (void) addPickerView{
    //pickerView
    int pickerHeight = 200;//pickerView的高度
    pickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, ScreenHeight, ScreenWidth, pickerHeight)];
    pickerView.delegate = self;
    pickerView.dataSource = self;
//    pickerView.showsSelectionIndicator = YES;//是否选择显示器
    pickerView.backgroundColor = [UIColor colorWithWhite:0.8 alpha:0.9];
    [self.view addSubview:pickerView];

}

//返回pickerview的组件数
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)thePickerView {
    return 1;
}

//返回每个组件上的行数
- (NSInteger)pickerView:(UIPickerView *)thePickerView numberOfRowsInComponent:(NSInteger)component {
    return [_pickerData count];
}

//设置每行显示的内容
- (NSString *)pickerView:(UIPickerView *)thePickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {
    return [_pickerData objectAtIndex:row];
}

//当你选中pickerview的某行时会调用该函数。
- (void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    [self fliterEvent:[_pickerData objectAtIndex:row]];
}

@end

分析整理Android的开源滤镜

1,GPUImage for Android GPUImage基于OpenGL实现的各种各样图像滤镜(图像处理)效果,多达50多种,idea源于GPUImage for iOS,基本囊括了最常见的图像...
  • u012992171
  • u012992171
  • 2015年11月04日 11:16
  • 2571

PS 滤镜算法原理——碎片效果

%%% Fragment %%% 对原图做四个方向的平移,然后对平移的结果取平均 %%% 碎片效果 clc; clear all; addpath('E:\PhotoShop Algortihm...
  • shinian1987
  • shinian1987
  • 2014年06月23日 15:05
  • 7196

SVG 滤镜(filter)

SVG 滤镜原语(filter primitive) feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix fe...
  • chy555chy
  • chy555chy
  • 2016年11月27日 14:21
  • 2224

图像处理算法之滤镜

程序员拿到设计师的滤镜设计稿后,要做的就是编写程序高度还原设计效果。这一点多多少少还是有些挑战,因为ps经过多年发展后,不同版本有些功能效果还不一样,比如最为常见的亮度、对比度调节,算法很简单,但是要...
  • u013085897
  • u013085897
  • 2017年04月04日 16:24
  • 2898

ios 滤镜处理(详细滤镜介绍)及处理方法

小弟最近正在研究语音识别,,,,,如有大神赐教,,万分感激,,,目前没有办法对人物的感情 进行识别,,如有人做过音乐软件,,,类似唱吧的应用,,希望提供思路。。qq:2464294279 mai...
  • Xoxo_x
  • Xoxo_x
  • 2016年09月13日 10:48
  • 3031

ps滤镜下载大全-PSCC 64位滤镜收集

图片后期处理软件最新版本 顶级数码后期软件DxO Optics Pro 9.5.125汉化版 DxO Optics Pro 破解版是世界上最好的照片后期处理软件之一,也是一款数码单反相机自...
  • sinat_17689227
  • sinat_17689227
  • 2014年07月15日 14:03
  • 2688

使用 PHP 、 GD 、ImageMagic 、JS 等对图片进行滤镜处理资料收集

因为一个项目需要在线处理图片,对图片做一些滤镜处理,和裁切以及合并图片等操作,但是服务器上没有安装 ImageMagic ,只能依靠 GD 库来实现,在这方面搜集了一些资料记录下。 (1)图片滤镜处理...
  • treesky
  • treesky
  • 2014年03月05日 23:46
  • 2174

iOS-实现滤镜效果的四种方式

IOS--实现滤镜效果 使用CIFilter,GPUImage,vImage。 IOS8之后,使用UIVisualEffectView。...
  • daiyibo123
  • daiyibo123
  • 2015年07月05日 00:17
  • 11095

Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库

Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库 1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光、风格色调、黑白照片处理、锐利度...
  • attilax
  • attilax
  • 2016年10月31日 04:13
  • 553

图像滤镜艺术--大雪滤镜

很不错的一款大雪效果滤镜,详细介绍了PS实现过程和C/C#代码实现过程,喜欢图像处理的兄弟姐妹们可以看一下,同时提供程序DEMO下载!...
  • Trent1985
  • Trent1985
  • 2014年12月16日 16:31
  • 2241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:滤镜
举报原因:
原因补充:

(最多只允许输入30个字)