Swift 4.1 Не удалось получить растровое представление этого NSImage - PullRequest
0 голосов
/ 06 июня 2018

Этот пример кода работал на MacOS Playground:

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?

1 Ответ

0 голосов
/ 05 января 2019

Я столкнулся с той же проблемой, несмотря на то, что использовал проект 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)!
    }
}
...