zoukankan      html  css  js  c++  java
  • IOS 毛玻璃化图片

    + (UIImage *)blurWithCoreImage:(UIImage *)sourceImage withFrame:(CGRect)frame

    {

        CIImage *inputImage = [CIImage imageWithCGImage:sourceImage.CGImage];

        

        // Apply Affine-Clamp filter to stretch the image so that it does not look shrunken when gaussian blur is applied

        CGAffineTransform transform = CGAffineTransformIdentity;

        CIFilter *clampFilter = [CIFilter filterWithName:@"CIAffineClamp"];

        [clampFilter setValue:inputImage forKey:@"inputImage"];

        [clampFilter setValue:[NSValue valueWithBytes:&transform objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];

        

        // Apply gaussian blur filter with radius of 30

        CIFilter *gaussianBlurFilter = [CIFilter filterWithName: @"CIGaussianBlur"];

        [gaussianBlurFilter setValue:clampFilter.outputImage forKey: @"inputImage"];

        [gaussianBlurFilter setValue:@3 forKey:@"inputRadius"];

        

        CIContext *context = [CIContext contextWithOptions:nil];

        CGImageRef cgImage = [context createCGImage:gaussianBlurFilter.outputImage fromRect:[inputImage extent]];

        

        // Set up output context.

        UIGraphicsBeginImageContext(frame.size);

        CGContextRef outputContext = UIGraphicsGetCurrentContext();

        CGContextScaleCTM(outputContext, 1.0, -1.0);

        CGContextTranslateCTM(outputContext, 0, - frame.size.height);

        

        // Draw base image.

        CGContextDrawImage(outputContext, frame, cgImage);

        

        // Apply white tint

        CGContextSaveGState(outputContext);

        CGContextSetFillColorWithColor(outputContext, [UIColor colorWithWhite:1 alpha:0.2].CGColor);

        CGContextFillRect(outputContext, frame);

        CGContextRestoreGState(outputContext);

        

        // Output image is ready.

        UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext();

        CGImageRelease(cgImage);

        

        UIGraphicsEndImageContext();

        

        return outputImage;

    }

  • 相关阅读:
    30、深入浅出MFC学习笔记,多线程
    29、深入浅出MFC学习笔记,多重文件和视图
    5、程序设计实践读书笔记
    6、C++ Primer 4th 笔记,标准IO库(1)
    SQL Server流程控制 7,Try...Catch 语句
    TSQL:流程控制 4,Case 语句
    SQL Server事务处理(Tansaction)与锁(Lock)
    SQL Server9,流程控制 Execute 语句(*)
    SQL Server流程控制 2,If...Else 语句
    SQL Server流程控制 1,Begin...End 语句
  • 原文地址:https://www.cnblogs.com/417460188dy/p/4580925.html
Copyright © 2011-2022 走看看