2014-02-22 47 views
5

我用CI過濾器並獲得奇怪的錯誤,我怎麼能知道什麼,我通過查找失蹤登錄- [UIImage的_imageByUnpremultiplying]:無法識別的選擇發送到實例

CIFilter *filter = [CIFilter filterWithName:@"CIFalseColor"];   
    [filter setValue:image forKey:@"inputImage"]; 
    CIColor *myBlue = [CIColor colorWithRed:0.0 green:0.0 blue:0.6 alpha:0.5]; 
    [filter setValue:myBlue forKey:@"inputColor0"]; 
    CIImage *filteredImageData = [filter valueForKey:@"outputImage"]; 
    UIImage *newImage = [UIImage imageWithCIImage:filteredImageData]; 
    _imageView.image=newImage; 



2014-02-22 16:04:12.002 colorMaker[1574:70b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImage _imageByUnpremultiplying]: unrecognized selector sent to instance 0x8b7aca0' 

libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 
+0

看起來像一個潛在的UIKit錯誤。 – Woodstock

回答

8

此異常會發生,如果您設爲"inputImage"的對象是UIImage。根據documentation,inputImage對象必須是CIImage

嘗試首先從您的UIImage獲取CIImage。

[filter setValue:image.CIImage forKey:@"inputImage"]; 
         ^^^^^^^ 
+0

感謝您的建議..現在開始工作 – DreamWatcher

0

經過Matthia的幫助終於可以解決它。正確的代碼是..

CIFilter *filter = [CIFilter filterWithName:@"CIFalseColor"];   
CIImage * beginImage = [CIImage imageWithCGImage:image.CGImage]; 
// set value must be of ciimage not uiimage 
[filter setValue:beginImage forKey:@"inputImage"]; 
CIColor *myBlue = [CIColor colorWithRed:0.0 green:0.0 blue:0.6 alpha:0.5]; 
[filter setValue:myBlue forKey:@"inputColor0"]; 
CIImage *filteredImageData = [filter valueForKey:@"outputImage"]; 
UIImage *newImage = [UIImage imageWithCIImage:filteredImageData]; 
_imageView.image=newImage; 
相關問題