我尝试从图片中检索exif数据。
我可以将其加载到词典中,但是无法使用此词典。

我当前的代码是:

import Cocoa
import ImageIO

let path = "/Volumes/Olivier/Original/Paysage/affoux/_OPI7684.NEF"
let UrlPath = URL(fileURLWithPath: path)

UrlPath.isFileURL
UrlPath.pathExtension
UrlPath.hasDirectoryPath


let imageSource = CGImageSourceCreateWithURL(UrlPath as CFURL, nil)
let imageProp = CGImageSourceCopyPropertiesAtIndex(imageSource!, 0, nil)
var key = "kCGImagePropertyWidth" as NSString

let h :NSDictionary = CFDictionaryGetValue(imageProp, kCGImagePropertyWidth)


最后一行根本不起作用。
有什么办法吗?
谢谢

最佳答案

问题是您的密钥名称错误。您的意思是kCGImagePropertyPixelWidth。而且它不是字符串。这是一个常数。因此,不应使用引号;只需直接使用该常数,不必担心其值是多少。

我还建议您在此过程的早期转换为Swift字典。这是您可以为自己建模的实际工作代码:

let src = CGImageSourceCreateWithURL(url as CFURL, nil)!
let result = CGImageSourceCopyPropertiesAtIndex(src, 0, nil)!
let d = result as! [AnyHashable:Any]
let width = d[kCGImagePropertyPixelWidth] as! CGFloat
let height = d[kCGImagePropertyPixelHeight] as! CGFloat


当然,该代码非常糟糕,因为每一行都包含一个感叹号(这意味着“使我崩溃”),但是在现实生活中我不会崩溃,因此我允许它保留下来。

10-08 05:44
查看更多