CGImage / ImageIO代码在操场上有效但在OSX应用程序

时间:2017-11-20 20:23:39

标签: swift macos core-graphics

此例程在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)。

有什么想法吗?

0 个答案:

没有答案