2013-08-16 39 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