core-image - Swift 4.1 无法获得此 NSImage 的位图表示

标签 core-image ciimage swift4.1

此代码示例在 macOS 游乐场中工作:

import Cocoa

import XCPlayground

func getResImg(name: String, ext: String) -> CIImage {
   guard let fileURL = Bundle.main.url(forResource: name, withExtension: ext) else {
    fatalError("can't find image")
   }
   guard let img = CIImage(contentsOf: fileURL) else {
    fatalError("can't load image")
   }
   return img

}

var img = getResImg(name: "noise", ext: "jpg")

升级到 Swift 4.1 后就没有了。错误:无法获得此 NSImage 的位图表示。

它现在如何在 Swift 4.1 中工作?

最佳答案

即使我使用的是 macOS 项目并且无法查明这里出了什么问题,我也遇到了同样的问题,但我找到了一种解决方法,可以修复 CIImage 的操场渲染问题。通过使用 CustomPlaygroundDisplayConvertible
只需将以下代码添加到您的操场顶部,您的图像将再次呈现

extension CIImage: CustomPlaygroundDisplayConvertible {
    static let playgroundRenderContext = CIContext()
    public var playgroundDescription: Any {
        let jpgData = CIImage.playgroundRenderContext.jpegRepresentation(of: self, colorSpace: CGColorSpace(name: CGColorSpace.sRGB)!, options: [:])!
        return NSImage(data: jpgData)!
    }
}

关于core-image - Swift 4.1 无法获得此 NSImage 的位图表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50722950/

相关文章:

ios - 从文件创建 CIImage 时出现问题

ios - CIAdditionCompositing 产生不正确的效果

uiimage - 在 iOS7 中创建模糊效果

ios - 长按手势多次调用

alamofire - 从 Swift 4 更新到 4.1 后的转换问题

macos - 在两个轴上翻转 NSImage

ios - 将 iOS CIDetector(人脸检测)坐标从 aspectRatioThumbnail 缩放到 fullScreenImage

ios - 如何使用Alamofire向服务器发送参数?

swift - 在 Swift 中重置 CoreImage 过滤器

ios - iOS是否内置了时间序列平滑,比如内核或高斯? (也许在 CoreImage 或 CoreAudio 中?)