0

我将如何使UIImageView渐变模糊background?换句话说,图像完全blurred在左侧,而在右侧变得不那么模糊?

4

1 回答 1

4

我们在项目中做了同样的事情!我们使用了这种方法:

(UIImage *)blurImage:(CGImageRef*)image withBlurLevel:(CGFloat)blur
{
    CIImage *inputImage = [CIImage imageWithCGImage:image];
    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"
                                  keysAndValues:kCIInputImageKey, inputImage, @"inputRadius", @(blur), nil];

    CIImage *outputImage = filter.outputImage;

    CIContext *context = [CIContext contextWithOptions:nil];

    CGImageRef outImage = [context createCGImage:outputImage
                                        fromRect:[inputImage extent]];

    UIImage *returnImage = [UIImage imageWithCGImage:outImage];

    CGImageRelease(outImage);

    return returnImage;
}

此代码使用您的 GPU 进行模糊处理,但如果您不希望 UI 被阻塞一秒钟,则需要在另一个线程中调用该方法。

希望能帮助到你!

于 2013-07-04T13:59:51.267 回答