从文件创建 CIImage 时出现问题

Issue when creating CIImage from file

无论我尝试直接从文件加载 CIImage 什么,我都得到一个 nil。但是我可以将文件加载到 UIImage 并将其转换为 CIImage

所以,这有效:

        let testUIImage = UIImage(named: "image_0001.jpg")!
        let testCIImage = CIImage(image: testUIImage)  // OK

但这不是:

        let testCIImage = CIImage(contentsOf: URL(string: "image_0001.jpg")!)  // returns nil

我做错了什么?是 URL 吗?

  1. UIImage(named: "name.ext") 是一个方便的初始值设定项。这是

    的缩写形式
    guard let url = Bundle.main.url(forResource:"name", withExtension:"ext"),
          let data = try? Data(contentsOf: url),
          let image = UIImage(data: data) else { return nil }
    return image
    
  2. URL(string: 需要一个代表 完整 URL 的字符串,例如

    URL(string: "https://example.com/path/to/image_0001.jpg")
    

    URL(string: "file:///Users/myuser/path/to/image_0001.jpg")
    

如果你的图像在主包中,你需要给文件 url 然后你可以得到 url 像下面的代码

guard let url = Bundle.main.url(forResource:"image_0001", withExtension:"jpg") else {
  return 
}
let testCIImage = CIImage(contentsOf: url)