iOS画面模糊
增加 CoreImage.framework CoreGraphic.framework 等库
在使用时引入:#import
<Accelerate/Accelerate.h> ,支持iOS 5.0 及以上。
-(void)show
{
UIImage* img = [self
getBlurImage:[UIImage
imageNamed:@"Default-568h.png"]];
[_bgImageView
setImage:img];
}
-(UIImage*)getBlurImage:(UIImage*)image
{
return [self
gaussBlur:0.2
andImage:image];
}
- (UIImage*)gaussBlur:(CGFloat)blurLevel andImage:(UIImage*)originImage
{
blurLevel = MIN(1.0,
MAX(0.0, blurLevel));
//int boxSize = (int)(blurLevel * 0.1 * MIN(self.size.width, self.size.height));
;//模糊度。
boxSize = boxSize - (boxSize % ) + ;
NSData *imageData =
UIImageJPEGRepresentation(originImage, );
UIImage *tmpImage = [UIImage
imageWithData:imageData];
CGImageRef img = tmpImage.CGImage;
vImage_Buffer inBuffer, outBuffer;
vImage_Error error;
void *pixelBuffer;
//create vImage_Buffer with data from CGImageRef
CGDataProviderRef inProvider =
CGImageGetDataProvider(img);
CFDataRef inBitmapData =
CGDataProviderCopyData(inProvider);
inBuffer.width =
CGImageGetWidth(img);
inBuffer.height =
CGImageGetHeight(img);
inBuffer.rowBytes =
CGImageGetBytesPerRow(img);
inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);
//create vImage_Buffer for output
pixelBuffer = malloc(CGImageGetBytesPerRow(img) *
CGImageGetHeight(img));
outBuffer.data = pixelBuffer;
outBuffer.width =
CGImageGetWidth(img);
outBuffer.height =
CGImageGetHeight(img);
outBuffer.rowBytes =
CGImageGetBytesPerRow(img);
;
CGFloat sig2 = windowR /
3.0;
){ sig2 = -/(*sig2*sig2); }
int16_t *kernel = (int16_t*)malloc(boxSize*sizeof(int16_t));
;
; i<boxSize; ++i){
kernel[i] = *exp(sig2*(i-windowR)*(i-windowR));
sum += kernel[i];
}
free(kernel);
// convolution
error = vImageConvolve_ARGB8888(&inBuffer, &outBuffer,
, , kernel, boxSize, , sum,
NULL, kvImageEdgeExtend);
error = vImageConvolve_ARGB8888(&outBuffer, &inBuffer,
, , kernel, , boxSize, sum,
NULL, kvImageEdgeExtend);
outBuffer = inBuffer;
if (error) {
//NSLog(@"error from convolution %ld", error);
}
CGColorSpaceRef colorSpace =
CGColorSpaceCreateDeviceRGB();
CGContextRef ctx =
CGBitmapContextCreate(outBuffer.data,
outBuffer.width,
outBuffer.height,
,
outBuffer.rowBytes,
colorSpace,
kCGBitmapAlphaInfoMask &
kCGImageAlphaNoneSkipLast);
CGImageRef imageRef =
CGBitmapContextCreateImage(ctx);
UIImage *returnImage = [UIImage
imageWithCGImage:imageRef];
//clean up
CGContextRelease(ctx);
CGColorSpaceRelease(colorSpace);
free(pixelBuffer);
CFRelease(inBitmapData);
CGImageRelease(imageRef);
return returnImage;
}
版权声明:本文博客原创文章,博客,未经同意,不得转载。
iOS画面模糊的更多相关文章
- iOS可视化动态绘制连通图
上篇博客<iOS可视化动态绘制八种排序过程>可视化了一下一些排序的过程,本篇博客就来聊聊图的东西.在之前的博客中详细的讲过图的相关内容,比如<图的物理存储结构与深搜.广搜>.当 ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
- iOS总结_UI层自我复习总结
UI层复习笔记 在main文件中,UIApplicationMain函数一共做了三件事 根据第三个参数创建了一个应用程序对象 默认写nil,即创建的是UIApplication类型的对象,此对象看成是 ...
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- 告别被拒,如何提升iOS审核通过率(上篇)
iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- Summary of Critical and Exploitable iOS Vulnerabilities in 2016
Summary of Critical and Exploitable iOS Vulnerabilities in 2016 Author:Min (Spark) Zheng, Cererdlong ...
随机推荐
- CORS
CORS(跨域资源共享) 前言:上一篇文章提到使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享).虽然前些天也看了一下, ...
- atitit.为什么技术的选择方法java超过.net有前途
atitit.为什么技术的选择方法java超过.net有前途 #----有没有法律依据不同的铜需求... 通常有开发效率,需要在稳定性.. 笔者 老哇爪 Attilax 艾龙, EMAIL:1466 ...
- Duanxx的C++学习 : 数字转换String
下面是这两个数字转换String道路.件:sstream string num2str1(unsigned int num) { stringstream ss; ss<<num; ret ...
- 表与表的关系把RD搞乱了,记一个Procedure中的bug
就是6张表的关联查询,写了一个存储过程,使用4层for来处理 bug:最后一个for中,两张表的关联条件少了一个,结果数据多查了. 排查办法:使用dbms_output.printline('');每 ...
- EXCEL 两人的建立Y轴
在本文中,EXCEL2013基于,操作的其他版本基本上相同模式 原始数据和最后的结果如下面的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanloX2p ...
- Hdu 3962 Microgene (AC自己主动机+矩阵)
标题效果: 构造一个字符串,使得有两个和两个以上的目标串.长短L这一系列有多少串都. IDEAS: 只有全款减有1一些字符串,没有目标就是答案. 假定数据是非常小的,够用dp解.dp[i][j][k] ...
- Dynamics CRM2013/2015 禁止欢迎屏幕(Disable the Welcome Screen)
首先打开Dynamic CRM 2013将有一个欢迎界面的例子,下面的图,它不会为了图检查框出现.OK然后,下一次打开就没有. 可是当我们打开F12开发者工具,清除域的缓存后再次打开CRM,这个欢迎 ...
- char* 和char[]差异
从因特网以下内容.笔者和总结汇总. 1. 问题介绍 问题引入: 在实习过程中发现了一个曾经一直默认的错误.相同char *c = "abc"和char c[]="abc& ...
- 使用linux服务logrotate文件tomcat日志文件
使用notepad++编辑本地文件 tomcat: /usr/tomcat/logs/catalina.out { copytruncate daily dateext nocompress miss ...
- js日期操作
1.最基本的日期操作 var mydate = new Date(); set/get FullYear,Month,Date,Hour,Minutes,Second可以随意拼接 toLocale ...