• 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 }
  • 相关阅读:
    长宽广州地区DNS
    修改PHP的memory_limit限制
    适用于Magento的最合适的.htaccess写法
    在magento中如何回复客户的评论
    冲刺!
    冲刺!
    冲刺!
    冲刺!
    冲刺!
    冲刺!
  • 原文地址:https://www.cnblogs.com/airy99/p/4595883.html
Copyright © 2020-2023  润新知