效果图:

核心方法:

  1. // 出入UIImage 和 blur模糊成度 (0-1)
  2. - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {
  3.  
  4. /** 注意点:
  5. 1. 需要引入#import <Accelerate/Accelerate.h>
  6. 2. blur 的范围必须在0-1中间,否则强制为0.5
  7. 3.
  8. */
  9.  
  10. if (blur < .f || blur > .f) {
  11. blur = 0.5f;
  12. }
  13. int boxSize = (int)(blur * );
  14. boxSize = boxSize - (boxSize % ) + ;
  15. CGImageRef img = image.CGImage;
  16. vImage_Buffer inBuffer, outBuffer;
  17. vImage_Error error;
  18. void *pixelBuffer;
  19. CGDataProviderRef inProvider = CGImageGetDataProvider(img);
  20. CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
  21. inBuffer.width = CGImageGetWidth(img);
  22. inBuffer.height = CGImageGetHeight(img);
  23. inBuffer.rowBytes = CGImageGetBytesPerRow(img);
  24. inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);
  25. pixelBuffer = malloc(CGImageGetBytesPerRow(img) *
  26. CGImageGetHeight(img));
  27. if(pixelBuffer == NULL)
  28. NSLog(@"No pixelbuffer");
  29. outBuffer.data = pixelBuffer;
  30. outBuffer.width = CGImageGetWidth(img);
  31. outBuffer.height = CGImageGetHeight(img);
  32. outBuffer.rowBytes = CGImageGetBytesPerRow(img);
  33. error = vImageBoxConvolve_ARGB8888(&inBuffer,
  34. &outBuffer,
  35. NULL,
  36. ,
  37. ,
  38. boxSize,
  39. boxSize,
  40. NULL,
  41. kvImageEdgeExtend);
  42. if (error) {
  43. NSLog(@"error from convolution %ld", error);
  44. }
  45. CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
  46. CGContextRef ctx = CGBitmapContextCreate(
  47. outBuffer.data,
  48. outBuffer.width,
  49. outBuffer.height,
  50. ,
  51. outBuffer.rowBytes,
  52. colorSpace,
  53. kCGImageAlphaNoneSkipLast);
  54. CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
  55. UIImage *returnImage = [UIImage imageWithCGImage:imageRef];
  56. //clean up
  57. CGContextRelease(ctx);
  58. CGColorSpaceRelease(colorSpace);
  59. free(pixelBuffer);
  60. CFRelease(inBitmapData);
  61. CGColorSpaceRelease(colorSpace);
  62. CGImageRelease(imageRef);
  63. return returnImage;
  64. }

iOS_UIImage_毛玻璃效果的更多相关文章

  1. 使用CSS3制作导航条和毛玻璃效果

    导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生一些.简单的说,毛玻璃其实就是让图片或者背景使用相应的方法进行模糊处理.这种效果对用户来说是十分具有视觉冲击力的. 本次分享的主题 ...

  2. 解决css3毛玻璃效果(blur)有白边问题

    做一个登录页,全屏背景图毛玻璃效果,实现方法如下: HTML: <body> <div class="login-wrap"> <div class= ...

  3. Swift 之模糊效果(毛玻璃效果,虚化效果)的实现

    前言: 之前项目中有用到过Objective-C的的模糊效果,感觉很是不错,而且iOS8之后官方SDK也直接提供了可以实现毛玻璃效果的三个类:UIBlurEffect.UIVibrancyEffect ...

  4. iOS模糊效果(毛玻璃效果)的实现

    前一段时间项目中用到毛玻璃效果,那时对UIBlurEffect类和 UIVisualEffectView这两个类做了一部分了解.但当时并没有去特别的深入研究,直到项目做完后,才静下心来好好研究了一番. ...

  5. qt qml fuzzyPanel 毛玻璃效果

    毛玻璃效果,用qml来写代码真是简短,大爱qml:) [下载地址]http://download.csdn.net/detail/surfsky/8426641 [核心代码] Rectangle{ c ...

  6. CSS3中毛玻璃效果的使用方法

    今天在使用icloud的时候看到苹果icloud官网的毛玻璃效果非常赞,仔细研究了一下它的实现方式,是使用js配合background-image: -webkit-canvas的形式绘制出的毛玻璃背 ...

  7. 【CSS】梯形、平行四边形导航条与毛玻璃效果【转】

    转载出处:http://www.cnblogs.com/Uncle-Keith/p/5943158.html 代码部分有小改动. 导航条对于每一个Web前端攻城狮来说并不陌生,但是毛玻璃可能会相对陌生 ...

  8. iOS开发小技巧--实现毛玻璃效果的方法

    一.美工出图 二.第三方框架 -- DRNRealTimeBlur,框架继承自UIView.使用方法:创建UIView直接继承自框架的View,就有了毛玻璃效果 三.CoreImage -- 图片加高 ...

  9. android 开发 - 对图片进行虚化(毛玻璃效果,模糊)

    概述 IPAD,IPHONE上首页背景的模糊效果是不是很好看,那么在 Android中如何实现呢.我通过一种方式实现了这样的效果. 开源库名称:anroid-image-blur 一个android ...

随机推荐

  1. 快速安装Percona pt工具

    yum install perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-Time-HiRes perl-IO-Socket-SSLwget http://pk ...

  2. Python之路第一课Day8--随堂笔记(socket 承接上节---网络编程)

    本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...

  3. 一鼓作气 博客--第七篇 note7

    面向对象相关知识简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类变量:类变量在整个实例化的对象中是公用的.类变量定义 ...

  4. MYSQL INNODB PAGE一督

    MYSQL INNODB PAGE一督

  5. 剑指Offer面试题:8.斐波那契数列

    一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时 ...

  6. [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

    [.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VS ...

  7. Unit Testing with NSubstitute

    These are the contents of my training session about unit testing, and also have some introductions a ...

  8. 非正规方法处理AngulurJS模块管理问题

    1.起因 自己一直做winform,有幸从某个大神手里接了一个node.js,express,angulurJS等集众多开源框架的一个项目,赶鸭子上架,于是一边学习,一边用自己以往的思中去整理,重构代 ...

  9. TODO:关于自媒体博客改名

    TODO:关于自媒体博客改名 1.微信公众号:ludong86 个人类帐号一个自然年内可主动修改两次名称 2.企鹅号 不能改帐号名称 3.简书 名称可以随意修改,但是个人主页是系统自动生成的. 4.今 ...

  10. Xcode升级 Alcatraz 无法使用

    Alcatraz 主要是可以管理xcode 插件 随着 Xcode 的更新 Alcatraz 有可能无法使用 以下是解决办法: 1,关闭Xcode 2,如果已经安装过 Alcatraz,先卸载掉,然后 ...