1.CoreImage 中的模糊滤镜

1.1CoreImage是苹果用来简化图片处理的框架

1.2CIImage、CIFilter与CIContext三者联系

1.3CIGaussianBlur中可能设置的參数

2.UIImage+imageEffects的category模糊效果

3.iOS8中的UIVisualEffectView模糊效果的使用方法

一、.CoreImage 中的模糊滤镜

- (void)coreImageBlur

{

//原始图片

UIImage *image          = [UIImage imageNamed:@"CoreImage"];

//CoreImage部分--------------------

//CIImage

CIImage *ciImage        = [[CIImage alloc]initWithImage:image];

//CIFilter

CIFilter*blurFilter     = [CIFilter filterWithName:@"CIGaussianBlur"];

//将图片输入到滤镜中

[blurFilter setValue:ciImage forKey:kCIInputImageKey];

//设置模糊程序

[blurFilter setValue:@(1) forKey:@"inputRadius"];

//用业查询滤镜能够设置的參数以及一引起相关的信息

NSLog(@"%@",[blurFilter attributes]);

//将处理好的图片输出

CIImage *outCiImage     = [blurFilter valueForKey:kCIOutputImageKey];

//CIContext

CIContext *context      = [CIContext contextWithOptions:nil];

//获取CGImage句柄

CGImageRef outCGImage   = [context createCGImage:outCiImage

fromRect:[outCiImage extent]];

//终于获取到图片

UIImage *blurImage      = [UIImage imageWithCGImage:outCGImage];

//释放CGImage句柄

CGImageRelease(outCGImage);

//---------------------------------

//

//初始化UIImageView

UIImageView *imageView = \

/2.0)];

imageView.image         =  blurImage;

imageView.center        = self.view.center;

[self.view addSubview:imageView];

}

二、UIImage+ImageEffects的category
模糊效果

1.UIImage+ImageEffects是Accelerate框架中的内容

2.UIImage+ImageEffects的模糊效果很美观

3.改动过的UIImage+ImageEffects能够对图片进行局模糊

#import "UIImage+ImageEffects.h"

- (void)effectiveImages

{

UIImage *sourceImage = [UIImage imageNamed:@"normal"];

CGSize  imageSize    = sourceImage.size;

, ,
imageSize., imageSize.height )];

UIImageView *imageView = [[UIImageView alloc]initWithImage:blurImage];

imageView.center        = self.view.center;

[self.view addSubview:imageView];

}

UIImage+ImageEffects 下载地址:http://download.csdn.net/detail/baitxaps/8893093


三、iOS8 中 UIVisualEffectView 模糊效果的使用
1.UIVisualEffectView的模糊效果是即时渲染的
2.要注意处理在UIVisualEffectiView之上的文本显示
3.仅仅能在iOS8以上才可以使用UIVisualEffectiView

- (void)visualEffectImage

{

UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:self.view.bounds];

UIImageView *imageView      = [[UIImageView alloc]initWithImage:[UIImageimageNamed:@"normal"]];

scrollView.contentSize      = imageView.image.size;

scrollView.bounces           = NO;

[scrollView addSubview:imageView];

[self.view addSubview:scrollView];

/*加入模糊效果*/

//1.创建模糊View

UIVisualEffectView *effectView = [[UIVisualEffectView alloc]initWithEffect:[UIBlurEffecteffectWithStyle:UIBlurEffectStyleLight ]];

//2.设定尺寸

effectView., , , );

//3.加入到View其中

[self.view addSubview:effectView];

//4.加入显示文本

UILabel *label = [[UILabel alloc]initWithFrame:effectView.bounds];

label.text      = @"hello world";

label.];

label.textAlignment = NSTextAlignmentCenter;

// [effectView.contentView addSubview:label];

//5.

//加入模糊子View的UIVisualEffectView

//1.创建出子模糊View

UIVisualEffectView *subEffectView = [[UIVisualEffectView alloc]initWithEffect:[UIVibrancyEffect effectForBlurEffect:(UIBlurEffect *)effectView.effect]];

//2.设定尺寸

subEffectView.frame = effectView.bounds;

//3.将子模糊View加入到effective的contentView才干生效

[effectView.contentView addSubview:subEffectView];

//4.加入要显示的View来达到特殊的效果

[subEffectView.contentView addSubview:label];

}

四、设计下载图片后自己主动模糊的控件

1.用KVO监听下载完毕后的事件

2.在子线程中进行渲染。主线程中进行图片的载入

3.新建一个下载类,GCD看前面博客文档GCD的封装

@interface BlurDownloadPicView : UIView

@property (nonatomic,strong)NSString *pictureUrlString;//图片下载地址

@property (nonatomic)       UIViewContentMode contentMode;//图片显示方式

//開始运行

- (void)startProgress;

@end


#import "UIImage+ImageEffects.h"

#import "BlurDownloadPicView.h"

#import "GCD.h"

@interface BlurDownloadPicView()

@property (nonatomic,strong)UIImageView *imageView;

@end

@implementation BlurDownloadPicView

- (instancetype)initWithFrame:(CGRect)frame{

self = [super initWithFrame:frame];

if (self) {

//初始化控件

//最好放一个方法中

self.imageView = [[UIImageView alloc]initWithFrame:self.bounds];

self.imageView.alpha = 0.f;

[self addSubview:self.imageView];

}

return self;

}

- (void)startProgress{

if (self.pictureUrlString)
{

[GCDQueue executeInGlobalQueue:^{

//创建请求

NSURLRequest *request = [NSURLRequest requestWithURL:

[NSURL URLWithString:self.pictureUrlString]];

//由于是同步请求。会堵塞主线程

NSData *data = [NSURLConnection sendSynchronousRequest:request

returningResponse:nil

error:nil];

UIImage *image = [[UIImage alloc]initWithData:data];

//对图片进行模糊。会堵塞主线程

UIImage *blurImage = [image blurImage];

[GCDQueue executeInMainQueue:^{

[UIView animateWithDuration:1.0 animations:^{

self.imageView.alpha = 1.f;

}];

self.imageView.image = blurImage;

}];

}];

}

}

@synthesize contentMode = _contentMode;

- (void)setContentMode:(UIViewContentMode)contentMode{

_contentMode = contentMode;

self.imageView.contentMode = contentMode;

}

- (UIViewContentMode)contentMode{

return _contentMode;

}

@end


4.使用

- (void)viewDidLoad {

[super viewDidLoad];

//[self coreImageBlur];

//[self visualEffectImage];

NSString *picUrlString = @"http://t1.mmonly.cc/uploads/allimg/tuku2/14400BR6-0.jpg";

BlurDownloadPicView *blurDownLoadView = [[BlurDownloadPicView alloc]initWithFrame:self.view.bounds];

blurDownLoadView.center               = self.view.center;

[self.view addSubview:blurDownLoadView];

blurDownLoadView.pictureUrlString = picUrlString;

blurDownLoadView.contentMode       = UIViewContentModeScaleAspectFill;

[blurDownLoadView startProgress];

}




CoreImage 中的模糊滤镜的更多相关文章

  1. mysql中的模糊查询

    转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...

  2. Mybatis中的模糊查询

    今天下午做的一个功能,要用到模糊查询,字段是description,刚开始我的写法用的是sql中的模糊查询语句, 但是这个有问题,只有将字段的全部值传入其中,才能查询,所以不是迷糊查询. 后来经过搜索 ...

  3. 最快的3x3中值模糊

    10.1国庆后,知名博主:laviewpbt  http://www.cnblogs.com/Imageshop/ 发起了一个优化3x3中值模糊的小活动. 俺也参加其中,今天博主laviewpbt   ...

  4. mongo中的模糊查询

    以下是一个mongo查询的综合应用,即介绍一个生产中实际应用的模糊查询,当然其实也很简单,主要用到mongo中的模糊查询和$or查询,以及并的关系,下面是一个mongo中的一条记录 { "_ ...

  5. 解决 canvas 绘图在高清屏中的模糊问题

    解决 canvas 绘图在高清屏中的模糊问题 为什么模糊 CSS 像素是一个抽象单位(1 px),浏览器根据某种规则将 css 像素转化为屏幕需要的实际像素值. 在高清屏之前,屏幕上显示一个像素点需要 ...

  6. MySQL中的模糊查询和通配符转义

    MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或RLIKE/NOT RLIKE,它们是同义词). 第一种是标准的SQL模式匹配.它有2 ...

  7. 【Django】Django中的模糊查询以及Q对象的简单使用

    Django中的模糊查询: 需要做一个查找的功能,所以需要使用到模糊查询. 使用方法是:字段名加上双下划线跟上contains或者icontains,icontains和contains表示是否区分大 ...

  8. Flash中如何使用滤镜

    使用滤镜 应用或删除滤镜 复制和粘贴滤镜 为对象应用预设滤镜 启用或禁用应用于对象的滤镜 启用或禁用应用于对象的所有滤镜 创建预设滤镜库 对象每添加一个新的滤镜,在属性检查器中,就会将其添加到该对象所 ...

  9. Emgu-WPF学习使用-中值模糊

    原文:Emgu-WPF学习使用-中值模糊 实现效果: 实现途径: 前提:Image File-> System.Drawing.Bitmap->Image<Bgr, byte> ...

随机推荐

  1. Oracle ODP.NET vs Microsoft MSDP

    08年做项目时,用 VS 2005,写据库层还在用 MSDP(System.Data.OracleClient),但是当时由于要操作 XML 和二进制文件,所以又使用了 ODP.NET(Oracle. ...

  2. linux安装experss搭建本地服务器

    准备nodejs和npm 保证本地安装了nodeJS和npm,如果没有安装的话,通过下面的命令进行安装: sudo apt-get install nodejs //安装nodeJS sudo apt ...

  3. SQL Server如何进行时间比较的代码

    例子: datediff(dd,add_time,getdate()) not between 0 and 7 select count(*) from table where DATEDIFF ([ ...

  4. Maven进行Mahout编程,使其兼容Hadoop2.2.0环境运行 (转)

    http://blog.csdn.net/u010967382/article/details/39209329 http://blog.csdn.net/fansy1990/article/deta ...

  5. Hibernate学习笔记二:常用映射配置

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6760895.html 一:单向一对一 常用唯一外键的方法来配置单向一对一关系. 1:实体关系 类A中有类B对象 ...

  6. JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134851.html 在开发过程中,经常做的一件事,也是最基本的事,就是从数据库中查询数据,然后在客户端显示出 ...

  7. RSA密钥生成、加密解密、签名验签

    RSA 非对称加密公钥加密,私钥解密 私钥签名,公钥验签 下面是生成随机密钥对: //随机生成密钥对 KeyPairGenerator keyPairGen = null; try { keyPair ...

  8. gitlab webhook报500

    使用root登陆gitlab,进入如下位置:

  9. 微信扫码支付springboot版本

    发布时间:2018-11-06   技术:springboot+freemarker   概述 该项目是一个采用springboot构建的web项目,主要实现了微信扫码支付功能.包含最基本的创建订单, ...

  10. android 用代码画虚线边框背景

                   1.虚线画效果,可以使用Android中的xml来做. 2.直接上代码: <RelativeLayout android:id="@+id/coupon_ ...