LinkedIn登录界面模糊效果

LinkedIn登录界面模糊效果源码:

[objc]  view plain  copy
  1. + (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {  
  2.     if ((blur < 0.0f) || (blur > 1.0f)) {  
  3.         blur = 0.5f;  
  4.     }  
  5.       
  6.     int boxSize = (int)(blur * 100);  
  7.     boxSize -= (boxSize % 2) + 1;  
  8.       
  9.     CGImageRef img = image.CGImage;  
  10.       
  11.     vImage_Buffer inBuffer, outBuffer;  
  12.     vImage_Error error;  
  13.     voidvoid *pixelBuffer;  
  14.       
  15.     CGDataProviderRef inProvider = CGImageGetDataProvider(img);  
  16.     CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);  
  17.       
  18.     inBuffer.width = CGImageGetWidth(img);  
  19.     inBuffer.height = CGImageGetHeight(img);  
  20.     inBuffer.rowBytes = CGImageGetBytesPerRow(img);  
  21.     inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);  
  22.       
  23.     pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));  
  24.       
  25.     outBuffer.data = pixelBuffer;  
  26.     outBuffer.width = CGImageGetWidth(img);  
  27.     outBuffer.height = CGImageGetHeight(img);  
  28.     outBuffer.rowBytes = CGImageGetBytesPerRow(img);  
  29.       
  30.     error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL,  
  31.                                        00, boxSize, boxSize, NULL,  
  32.                                        kvImageEdgeExtend);  
  33.       
  34.       
  35.     if (error) {  
  36.         NSLog(@"error from convolution %ld", error);  
  37.     }  
  38.       
  39.     CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();  
  40.     CGContextRef ctx = CGBitmapContextCreate(  
  41.                                              outBuffer.data,  
  42.                                              outBuffer.width,  
  43.                                              outBuffer.height,  
  44.                                              8,  
  45.                                              outBuffer.rowBytes,  
  46.                                              colorSpace,  
  47.                                              CGImageGetBitmapInfo(image.CGImage));  
  48.       
  49.     CGImageRef imageRef = CGBitmapContextCreateImage (ctx);  
  50.     UIImage *returnImage = [UIImage imageWithCGImage:imageRef];  
  51.       
  52.     //clean up  
  53.     CGContextRelease(ctx);  
  54.     CGColorSpaceRelease(colorSpace);  
  55.       
  56.     free(pixelBuffer);  
  57.     CFRelease(inBitmapData);  
  58.       
  59.     CGColorSpaceRelease(colorSpace);  
  60.     CGImageRelease(imageRef);  
  61.       
  62.     return returnImage;  
  63. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值