iOS中滤镜的使用(一) 马赛克滤镜

原创 2015年07月09日 09:58:44

iOS中滤镜的使用(一)

马赛克滤镜



首先 要加载图片并转化为CIImage

CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"IMG_0160"]];

其次,创建filter滤镜

CIFilter *filter = [CIFilter filterWithName:@"CIPixellate"];
NSLog(@"%@",filter.attributes);
[filter setValue:ciImage  forKey:kCIInputImageKey];
[filter setDefaults];
CIImage *outImage = [filter           valueForKey:kCIOutputImageKey];

然后,用CIContext将滤镜中的图片渲染出来,原因,导出图片过过程中用到CGImageRef。

CIContext *context = [CIContext contextWithOptions:nil];

CGImageRef cgImage = [context createCGImage:outImage fromRect:[outImage extent]];

最后,导出图片,注意内存的释放

 UIImage *showImage = [UIImage imageWithCGImage:cgImage];

CGImageRelease(cgImage);

剩下的工作就是加载马赛克图片了

 UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, 600, 400)];
imageView.image = showImage;
imageView.center = self.view.center;
[self.view addSubview:imageView];

而Filter的属性有如下:
这里写图片描述

总的代码如下:

 //0:导入图片

    CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"IMG_0160"]];

    //1:创建filter滤镜

    CIFilter *filter = [CIFilter filterWithName:@"CIPixellate"];

    NSLog(@"%@",filter.attributes);
    [filter setValue:ciImage  forKey:kCIInputImageKey];

    [filter setDefaults];

    CIImage *outImage = [filter valueForKey:kCIOutputImageKey];

    //2:用CIContext将滤镜中的图片渲染出来

    CIContext *context = [CIContext contextWithOptions:nil];

    CGImageRef cgImage = [context createCGImage:outImage fromRect:[outImage extent]];

    //3:导出图片

    UIImage *showImage = [UIImage imageWithCGImage:cgImage];

    CGImageRelease(cgImage);

    //4:加载出来

    UIImageView *imageView = [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, 600, 400)];
    imageView.image = showImage;
    imageView.center = self.view.center;
    [self.view addSubview:imageView];
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS图片处理之涂抹马赛克解析

涂抹马赛克跟前一篇介绍的背景虚化 原理是一样的 实现原理,由上到下分三层,最下面一层为原图 3- 遮罩层(涂抹绘制层) 2- 原图马赛克后的效果图 1- 原图 涂抹的时候,如...

IOS 代码生成马赛克效果

NSData * data = UIImagePNGRepresentation(image);         //创建CIImage对象         _pCIImage = [CIImag...

【Android图像处理】图像处理之-马赛克滤镜

何为马赛克?   实现的思路就是选定一定大小的矩形区域,用其中任意一点的像素来填充整个区域,这样就实现了马赛克滤镜。 代码如下: //马赛克 public static Bitmap Mas...

canvas图像像素处理- 马赛克/滤镜(一)

getImageData() 从Canvas画板上取得所选区域的像素数据. putImageData() 方法函数则表示将所得到的像素数据描画到Canvas画板上形成图形。 如何在图像中参考一个像素周...

ios滤镜使用

  • 2016-06-27 19:42
  • 599KB
  • 下载

iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用

iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用 iOS8 Core Image In Swift:更复杂的滤镜 iOS8 Core Image In ...

iOS8 Core Image In Swift:自动改善图像以及内置滤镜的使用

转载自:http://blog.csdn.net/zhangao0086/article/details/39012231 iOS8 Core Image In Swift:自动...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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