当前位置:   iOS > 正文

iOS CIFilters实际上有效吗?

iphone,filter,ios,cifilter,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我目前正在尝试使用由不同CIF过滤器过滤的图片填充集合视图.我用apple方法获得了一系列过滤器.

let filterNames = CIFilter.filterNamesInCategories([kCICategoryStillImage,kCICategoryBuiltIn])

我认为这应该给我所有适用于iPhone上静止图像的过滤器.但它有点不起作用.

这是我从上面的方法得到的(一些)过滤器:

["CIAccordionFoldTransition", "CIAdditionCompositing", "CIAffineClamp", "CIAffineTile", "CIAffineTransform", "CIAreaAverage", "CIAreaHistogram", "CIAreaMaximum", "CIAreaMaximumAlpha", "CIAreaMinimum", "CIAreaMinimumAlpha", "CIAztecCodeGenerator", "CIBarsSwipeTransition", "CIBlendWithAlphaMask", "CIBlendWithMask", "CIBloom", "CIBoxBlur", "CIBumpDistortion", "CIBumpDistortionLinear", "CICheckerboardGenerator", "CICircleSplashDistortion", "CICircularScreen", "CICircularWrap", "CICMYKHalftone", 

还有很多.

我用这种方法应用过滤器:

func applyFilter(image: UIImage, filterName: String) -> UIImage {

    let beginImage = CIImage(CGImage: image.CGImage!)

    let filter = CIFilter(name: filterName)!

    filter.setValue(beginImage, forKey: kCIInputImageKey)

    filter.setDefaults()

    let context = CIContext(options: nil)
    let imageRef = context.createCGImage(filter.outputImage!, fromRect: beginImage.extent)

    let newImage = UIImage(CGImage: imageRef)
    return newImage
}

前两个过滤器不起作用,因为生成的图像是零,然后一些工作,然后我得到:

[ setValue:forUndefinedKey:]: this     class is not key value coding-compliant for the key inputImage.'
*** First throw call stack:
(
0   CoreFoundation                      0x000000010cd5de65     __exceptionPreprocess + 165
1   libobjc.A.dylib                     0x000000010efebdeb    objc_exception_throw + 48
2   CoreFoundation                      0x000000010cd5daa9 -   [NSException raise] + 9
3   CoreImage                           0x000000010d33eea2 -[CIFilter setValue:forUndefinedKey:] + 137
4   CoreImage                           0x000000010d4093ce -[CIAztecCodeGenerator setValue:forUndefinedKey:] + 335
5   Foundation                          0x000000010d6749bb -[NSObject(NSKeyValueCoding) setValue:forKey:] + 288
6   DrawIt                              0x000000010cb55088 _TFC6DrawIt25applyFilterViewController11applyFilterfS0_FTCSo7UIImage10filterNameSS_S1_ + 552
7   DrawIt                              0x000000010cb54b52 _TFC6DrawIt25applyFilterViewController14collectionViewfS0_FTCSo16UICollectionView22cellForItemAtIndexPathCSo11NSIndexPath_CSo20UICollectionViewCell + 1186
8   DrawIt                              0x000000010cb54e3f _TToFC6DrawIt25applyFilterViewController14collectionViewfS0_FTCSo16UICollectionView22cellForItemAtIndexPathCSo11NSIndexPath_CSo20UICollectionViewCell + 79
9   UIKit                               0x000000010e31d5ba -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:] + 483
10  UIKit                               0x000000010e31fae0 -[UICollectionView _updateVisibleCellsNow:] + 4431
11  UIKit                               0x000000010e32423b -[UICollectionView layoutSubviews] + 247
12  UIKit                               0x000000010db7f4a3 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703
13  QuartzCore                          0x0000000113d0059a -[CALayer layoutSublayers] + 146
14  QuartzCore                          0x0000000113cf4e70 _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
15  QuartzCore                          0x0000000113cf4cee _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
16  QuartzCore                          0x0000000113ce9475 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277
17  QuartzCore                          0x0000000113d16c0a _ZN2CA11Transaction6commitEv + 486
18  QuartzCore                          0x0000000113d259f4 _ZN2CA7Display11DisplayLink14dispatch_itemsEyyy + 576
19  CoreFoundation                      0x000000010ccbdc84 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
20  CoreFoundation                      0x000000010ccbd831 __CFRunLoopDoTimer + 1089
21  CoreFoundation                      0x000000010cc7f241 __CFRunLoopRun + 1937
22  CoreFoundation                      0x000000010cc7e828 CFRunLoopRunSpecific + 488
23  GraphicsServices                    0x0000000113bc8ad2 GSEventRunModal + 161
24  UIKit                               0x000000010dac8610 UIApplicationMain + 171
25  DrawIt                              0x000000010cb569fd main + 109
26  libdyld.dylib                       0x000000010faf492d start + 1
27  ???                                 0x0000000000000001 0x0 + 1
)
 libc++abi.dylib: terminating with uncaught exception of type NSException

我没有检查所有剩余的过滤器.我认为数组应该只包含易于使用的flters.是错误的代码还是我使用的过滤器数组?

但是,例如第一个过滤器(CIAccordionFoldTransition)似乎是一个过渡而不是真正的过滤器.所以它的输出为零是有意义的.

有没有办法让所有过滤器适用于单张图片?

我对iOs很新鲜,我希望我的问题不是对这个主页愚蠢,善良!提前问候和感谢.



1> rob mayoff..:

返回的一些过滤器CIFilter.filterNamesInCategories具有inputImage属性,而有些则没有.

例如,此处CIAztecCodeGenerator列出了(在您的异常报告中提到)理解的属性,而不是其中之一.inputImage

过滤器通过其inputKeys属性报告其输入属性的键.它通过其attributes属性描述其所有属性.

也许您希望将过滤器限制为具有inputImage属性的过滤器:

let filterNames = CIFilter.filterNamesInCategories([kCICategoryStillImage,kCICategoryBuiltIn])
    .filter { CIFilter(name: $0)?.inputKeys.contains("inputImage") ?? false }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/iOS/detail/8641
推荐阅读
  • 如何解决《iOS:dyld:库未加载SQLite》经验,为你挑选了1个好方法。sqlite,frameworks,ios,sqlite.swift,sql,xcode,iphone,DevBox,在线流程图,编程,编程问答,程序员,开发者工... [详细]

  • 如何解决《Virtualbox无法从GPT物理分区启动guest虚拟机》经验,为你挑选了1个好方法。virtualbox,guid-partition-table,vb,ubuntu,ios,windows,DevBox,在线流程图,编程,... [详细]

  • 如何解决《如何解析另一个Observable中的Observable?-rxjs》经验,为你挑选了1个好方法。javascript,rxjs,ios,https,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,jso... [详细]

  • 如何解决《对象数组的C++问题》经验,为你挑选了1个好方法。c++,arrays,object,ios,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前... [详细]

  • 如何解决《错误:CoreData:警告:无法为实体'Receipt'加载名为''的类.但该课程已被删除》经验,为你挑选了1个好方法。entity,class,core-data,ios,swift,DevBo... [详细]

  • 如何解决《如何根据相应UIImageView的大小决定1x,2x和3x图像大小?》经验,为你挑选了0个好方法。iphone,objective-c,uiimageview,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具... [详细]

  • 如何解决《SceneKit中的iOS自定义几何体》经验,为你挑选了1个好方法。objective-c,ios,scenekit,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳... [详细]

  • 如何解决《iOS:从Web下载非常大的数据的策略》经验,为你挑选了1个好方法。memory,ios,nsurlsession,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,un... [详细]

  • 如何解决《使用页面视图控制器出错》经验,为你挑选了1个好方法。ios,uipageviewcontroller,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在... [详细]

  • 如何解决《如何分支/切换多个条件?》经验,为你挑选了3个好方法。c++,c++11,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人... [详细]

  • 如何解决《Xamarinios如何在编辑时制作自定义UITableViewCell》经验,为你挑选了0个好方法。uitableview,uitextview,ios,autolayout,xamarin,DevBox,在线流程图,编程,编程... [详细]

  • 如何解决《我们可以在ScrollViewXamarin.Forms中隐藏滚动条》经验,为你挑选了2个好方法。c#,xamarin,xamarin.forms,go,ios,android,windows,DevBox,在线流程图,编程,编程... [详细]

  • 如何解决《在UIWebview,iOS中的视频自动播放》经验,为你挑选了1个好方法。objective-c,ios,swift,https,webview,html,css,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发... [详细]

  • 如何解决《使用Swift和NSURLSession固定的​​iOS证书》经验,为你挑选了4个好方法。ssl,owasp,pinning,ios,swift,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析... [详细]

  • 如何解决《计算文本文件中单词的出现次数》经验,为你挑选了1个好方法。c++,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,... [详细]

  • 如何解决《如何控制阴影传播和模糊?》经验,为你挑选了4个好方法。core-graphics,uiview,ios,swift,iphone,scala,xcode,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,js... [详细]

  • 如何解决《提交应用时,"符号文件太多"会发出警告》经验,为你挑选了1个好方法。xcode,app-store,appstore-approval,ios,cocoa,hive,iphone,DevBox,在线流程图,编程... [详细]

  • 如何解决《Swift-Instagram如何做到这一点?》经验,为你挑选了2个好方法。uitableview,uiviewcontroller,ios,swift,swift2,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]

  • 如何解决《c++函数指针没有改变》经验,为你挑选了0个好方法。c++,pointers,function,ios,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具... [详细]

  • 如何解决《如何在没有动画的情况下执行展开segue?》经验,为你挑选了1个好方法。xcode,ios,swift,unwind-segue,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,u... [详细]

相关标签
  

闽ICP备14008679号