2013-08-16 5 views
1

좀 알파 도면 내 UIImage를 마스크 등의 솔루션을 사용하고 있습니다 : masking an UIImageCIFilter +있는 UIImage + 알파 마스크

문제는 나중에 내가 어떤 CIFilters을 적용 할 것입니다. 그러나 필터의 값을 변경하면 내 알파가 UIImage에서 손실됩니다. CIFilter 수정 후 매번 출력 이미지에 알파 채널을 다시 적용해야합니까? 이것은 분명히 프로세스를 훨씬 느리게 만들 것입니다. 코드의

샘플 (각 새 단락이 다른 방법에)

// 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

CIFilter를 사용해야 만이 작업을 수행 할 수 있습니다. imageWithMask를 사용하는 대신에'CIBlendWithMask' CIFilter를 사용할 수 있습니다. –

답변

3

은 만 CIFilters를 사용하여이 작업을 수행 할 수 있습니다. imageWithMask을 사용하는 대신 CIBlendWithMask CIFilter를 사용할 수 있습니다. Apple CIFilter Reference