1. 程式人生 > >IOS 使用CoreImage實現圖片模糊效果

IOS 使用CoreImage實現圖片模糊效果

    //原始圖片
    UIImage*image = [UIImage imageNamed:@"sourceImage.jpg"];
    /*.....coreImage部分....*/
    //CIImage(圖片輸入源類似於UIImage)
    CIImage *ciImage = [[CIImage alloc]initWithImage:image];
    //CIFilter(濾鏡)CIGaussianBlue是一款濾鏡名字
    CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
    //將圖片輸入到濾鏡中
    [blurFilter setValue:ciImage forKey:kCIInputImageKey];
    //設定模糊長度(不模糊為0,模糊最大為100)
    [blurFilter setValue:@(0) forKey:@"inputRadius"];
    //將處理好的圖片輸出
    CIImage *outCiImage = [blurFilter valueForKey:kCIOutputImageKey];
    //輸入該濾鏡中所有可以設定的引數以及相關的資訊
    NSLog(@"%@",[blurFilter attributes]);
    //CIContext(CIImage的操作控制代碼)nil表示預設有CPU渲染圖片(如果讓GPU渲染提高效率,則應設定contextWithOptions的字典資料)
    CIContext *context = [CIContext contextWithOptions:nil];
    //獲取CGImage控制代碼
     CGImageRef outCGImage = [context createCGImage:outCiImage
    fromRect:[outCiImage extent]];
    //最終獲取到圖片
    UIImage *blurImage = [UIImage imageWithCGImage:outCGImage];
    //釋放CGImage控制代碼
    CGImageRelease(outCGImage);
    /*.........................*/
    //初始化ImageView
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(10,10,300,300)];
  //  imageView.backgroundColor = [UIColor redColor];
    imageView.image = blurImage;
    imageView.center = self.view.center;
    [self.view addSubview:imageView];