2013-08-16 97 views
1

我使用这样的解决方案,以掩盖我UIImage一些阿尔法绘图: masking an UIImageCIFilter +的UIImage +阿尔法遮掩

的问题是,后来我想申请一些CIFilters。但是,当我更改过滤器的值时,我的alpha会从UIImage中丢失。每次修改CIFilter后,是否必须重新应用Alpha通道才能输出图像?这肯定会使这个过程变得更慢。

样本代码:(每一个新的段落是另一种方法)

// set the image 
_image = [incomeImage imageWithMask:_mask]; // imageWithMask from method from link 
[_myView.imageView setImage:_image]; 

// calculate ciimages 
_inputCIImage = [[CIImage alloc] initWithCGImage:_image.CGImage options:nil]; 
_myView.imageView.image = _image; 
_currentCIImage = _inputCIImage; 

// change value in filter 
[filter setValue:@(0.2f) forKey:@"someKey"]; 
[filter setValue:_inputCIImage forKey:kCIInputImageKey]; 
_currentCIImage = [filter outputImage]; 
CGImageRef img = [_context createCGImage:_currentCIImage fromRect:[_currentCIImage extent]]; 
UIImage *newImage = [UIImage imageWithCGImage:img]; 
+0

它不应该在技术上迷路。向我们显示代码? – geekchic

+0

@Nikhita添加了最重要的代码部分。 – Vive

+3

您只能使用CIFilters来做到这一点。您可以使用'CIBlendWithMask' CIFilter来代替使用imageWithMask。 –

回答

3

你可以这样做只能使用CIFilters。您可以使用CIBlendWithMask CIFilter代替imageWithMaskApple CIFilter Reference