此例程在OSX 10.13.2 Beta中返回nil,但在操场中不返回。暂时不要使用较旧的操作系统进行测试。
func getImage(_ url: CFURL) -> CGImage? {
let sourceOptions = [
kCGImageSourceShouldAllowFloat as String: kCFBooleanTrue as NSNumber
] as CFDictionary
guard let imageSource = CGImageSourceCreateWithURL(url, sourceOptions) else { return nil }
guard let image = CGImageSourceCreateImageAtIndex(imageSource, 0, nil) else {
let imageSourceStatus = CGImageSourceGetStatus(imageSource)
Swift.print("image nil, Image Source Status = \(imageSourceStatus)")
return nil
}
return image
}
imageSource是非零的,但是图像是零。控制台消息是“Image Source Status = CGImageSourceStatus”,它不是有效的枚举值之一。
尝试使用Swift 3.2和Swift 4.0。 CGImageSourceCreateWithURL中的Dictionary arg可以设置为nil;没有什么变化。
正确的框架在项目中(虽然它没有它们链接,所以我不确定它们是否重要。)“导入ImageIO”但它没有它构建,所以我再也不确定。
URL绝对是一个有效的文件URL - 就像我说的,这在操场上有效,我尝试了很多不同的文件和文件类型(tiff,jpg和png)。
有什么想法吗?