5

我目前正在尝试制作一个简单的库,用于以面向对象的方式访问图片元数据(不再有字典)。我遇到了很多奇怪的错误:

  1. 即使定义了kCGImagePropertyMakerMinoltaDictionary, kCGImagePropertyMakerFujiDictionary, kCGImagePropertyMakerOlympusDictionary,kCGImagePropertyMakerPentaxDictionary键,在编译我的项目时我也会收到一个错误,说它们是未定义的:

    架构 armv7 的未定义符号:“_kCGImagePropertyMakerMinoltaDictionary”,引用自:SYMetadata.old 中的-[SYMetadata metadataMakerMinolta]:未找到架构 armv7 的符号

  2. kCGImagePropertyExifBodySerialNumber也是一个已定义的键,ImageIO/CGImageProperties.h但是在 iOS 5.1.1 中加载项目时,我收到一条错误消息,指出它不可用:

    dyld:找不到符号:_kCGImagePropertyExifBodySerialNumber 引用自:/var/mobile/Applications/0D8144E6-6313-4347-B503-247F5ACC0A11/ConnectTIG.app/ConnectTIG 预期在:/System/Library/Frameworks/ImageIO.framework/ImageIO in /var /mobile/Applications/0D8144E6-6313-4347-B503-247F5ACC0A11/ConnectTIG.app/ConnectTIG

  3. Apple 有很多可能的元数据字典键可用,例如kCGImagePropertyMakerNikonDictionary,它们存在但不起作用。例如,我用我的 Nikon D3100 拍摄了一张照片:当我在我的 Mac 上使用 Preview 应用程序打开它时,我可以访问 Nikon 元数据,但是当我在 iPhone 上获取所有键和值时,我没有这些信息。

我在 Moutain Lion 10.8.2 上运行 XCode 4.5.2(最后一个稳定版本 AFAIK)。我尝试在设备和模拟器上编译/运行,结果相同。

由于这将是一个公共图书馆,我已经在我的 github 存储库中拥有了所有内容:https ://github.com/dvkch/SYPictureMetadata

欢迎那些愿意发现这些错误从何而来的人来玩代码并随时提交推送请求。

如果您有任何可能的想法,将不胜感激!

斯坦

4

1 回答 1

1

我相当确定 SDK 有问题。您收到的错误是 SDK 中定义的符号,但实际上并不存在。我检查了你的项目,你已经包含了 ImageIO.framework ,它们都被定义了,实际上所有其他键都可以正常工作。kCGImagePropertyMakerNikonCameraSerialNumber 有效,但 kCGImagePropertyMakerMinoltaDictionary 无效。

如果您查看 CGImageProperties 文档的顶部,它会说框架是“ApplicationServices/ImageIO”。这是不可能的,iOS 上不存在 ApplicationServices。本文档中至少存在一个错误。显然他们已经逐字复制了 OSX 文档。

我肯定会提交有关此问题和文档的错误报告。

OSX 上的 FWIW 这些键(在 iOS 上可能相同)如下:

{MakerCanon}
{MakerNikon}
{MakerMinolta}
{MakerFuji}
{MakerOlympus}
{MakerPentax}
于 2013-01-03T02:02:22.163 回答