【问题标题】:-[UIImage _imageByUnpremultiplying]: unrecognized selector sent to instance-[UIImage _imageByUnpremultiplying]:无法识别的选择器发送到实例
【发布时间】:2014-03-24 01:53:44
【问题描述】:

我在使用 CI 过滤器并收到奇怪的错误,我如何通过查看日志来知道我缺少什么

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) 

【问题讨论】:

  • 看起来可能是一个 UIKit 错误。

标签: ios objective-c xcode uiimage cifilter


【解决方案1】:

如果您设置为"inputImage" 的对象是UIImage,则会发生此异常。根据documentation,inputImage 对象必须是CIImage

尝试先从你的 UIImage 获取 CIImage。

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

【讨论】:

    【解决方案2】:

    在马蒂亚的帮助下终于解决了。正确的代码是..

    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;
    

    【讨论】:

      猜你喜欢
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 2012-07-24
      相关资源
      最近更新 更多