从文件创建 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 吗?
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
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)
无论我尝试直接从文件加载 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 吗?
的缩写形式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
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)