首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决CIFilter在macOS应用程序中的错误

如何解决CIFilter在macOS应用程序中的错误
EN

Stack Overflow用户
提问于 2021-01-09 13:54:16
回答 1查看 142关注 0票数 0

我是macOS应用程序的新手,但是A已经做了一个iOS应用程序。我会试着把图像转换成灰度

编译是可以的,但是我在"filter.outputImage“中有一个运行错误

错误是:线程1:“发送给实例0x60000201e4e0”-NSImage未识别的选择器“

怎么了?

代码语言:javascript
复制
import Cocoa
import AppKit

class ViewController: NSViewController {

@IBOutlet weak var Load: NSButton!
@IBOutlet weak var ImageSource: NSImageView!
@IBOutlet weak var ImageNG: NSImageView!


func grayscale(image: NSImage) -> NSImage? {
    
    let width = image.size.width
    let height = image.size.height
    let cgsize = CGSize (width: width, height: height)
    
    let context = CIContext(options: nil)
    if let filter = CIFilter(name: "CIPhotoEffectMono") { //CIPhotoEffectNoir  CIPhotoEffectMono  CIPhotoEffectTonal CIPixellate
        filter.setValue(image, forKey: kCIInputImageKey)
        
        if let output = filter.outputImage {
            if let cgImage = context.createCGImage(output, from: output.extent) {
                return NSImage(cgImage : cgImage, size: cgsize)
            }
        }
    }
    return nil
}

@IBAction func LoadButtonClicked(_ sender: Any) {
    
    ImageSource.image = NSImage(named:"IMAGE")
    let imageNG = grayscale(image:  ImageSource.image! )
    ImageNG.image = imageNG
    
}

override func viewDidLoad() {
    super.viewDidLoad()
}

override var representedObject: Any? {
    didSet {
    }
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-09 14:43:39

kCIInputImageKey的值是CIImage对象,而不是NSImagehttps://developer.apple.com/documentation/coreimage/kciinputimagekey

也许是这样的:

代码语言:javascript
复制
if let cgImage = image.cgImage(forProposedRect: nil, context: nil, hints: nil) {
    filter.setValue(CIImage(cgImage: cgImage), forKey: kCIInputImageKey)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65643445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档