zoukankan      html  css  js  c++  java
  • iOS view模糊背景

     1 /**
     2  *  模糊背景
     3  *
     4  *  @param image    需要模糊的图片
     5  *  @param blur     高斯模糊的值
     6  *
     7  *  @return
     8  */
     9 - (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur
    10 {
    11     if ((blur < 0.0f) || (blur > 1.0f)) {
    12         blur = 0.5f;
    13     }
    14     
    15     int boxSize = (int)(blur * 100);
    16     boxSize -= (boxSize % 2) + 1;
    17     
    18     CGImageRef img = image.CGImage;
    19     
    20     vImage_Buffer inBuffer, outBuffer;
    21     vImage_Error error;
    22     void *pixelBuffer;
    23     
    24     CGDataProviderRef inProvider = CGImageGetDataProvider(img);
    25     CFDataRef inBitmapData = CGDataProviderCopyData(inProvider);
    26     
    27     inBuffer.width = CGImageGetWidth(img);
    28     inBuffer.height = CGImageGetHeight(img);
    29     inBuffer.rowBytes = CGImageGetBytesPerRow(img);
    30     inBuffer.data = (void*)CFDataGetBytePtr(inBitmapData);
    31     
    32     pixelBuffer = malloc(CGImageGetBytesPerRow(img) * CGImageGetHeight(img));
    33     
    34     outBuffer.data = pixelBuffer;
    35     outBuffer.width = CGImageGetWidth(img);
    36     outBuffer.height = CGImageGetHeight(img);
    37     outBuffer.rowBytes = CGImageGetBytesPerRow(img);
    38     
    39     error = vImageBoxConvolve_ARGB8888(&inBuffer, &outBuffer, NULL, 0, 0, boxSize, boxSize, NULL, kvImageEdgeExtend);
    40     
    41     CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    42     CGContextRef ctx = CGBitmapContextCreate(outBuffer.data, outBuffer.width, outBuffer.height, 8, outBuffer.rowBytes, colorSpace, CGImageGetBitmapInfo(image.CGImage));
    43     
    44     CGImageRef imageRef = CGBitmapContextCreateImage (ctx);
    45     UIImage *returnImage = [UIImage imageWithCGImage:imageRef];
    46     
    47     //clean up
    48     CGContextRelease(ctx);
    49     CGColorSpaceRelease(colorSpace);
    50     
    51     free(pixelBuffer);
    52     CFRelease(inBitmapData);
    53     
    54     CGColorSpaceRelease(colorSpace);
    55     CGImageRelease(imageRef);
    56     
    57     return returnImage;
    58 }
  • 相关阅读:
    甲骨文新BI应用紧盯SAP客户
    HR相关知识
    透过李宁集团看零售行业BI解决案例
    三全食品:信息化建设狂飙突进的六年
    国际主流商业BI产品对比分析
    项目管理的9个知识领域5个项目管理过程组及项目管理的三维约束
    给管理新手的六点建议(转)
    Oracle BI产品线
    怎么上传应用
    android 各种进度条(ProgressBar)
  • 原文地址:https://www.cnblogs.com/airy99/p/4595883.html
Copyright © 2011-2022 走看看