iPhone ImageIO没有返回图片的所有元数据

dvk*_*kch 5 exif metadata objective-c javax.imageio

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

  1. 即使kCGImagePropertyMakerMinoltaDictionary,kCGImagePropertyMakerFujiDictionary,kCGImagePropertyMakerOlympusDictionary,kCGImagePropertyMakerPentaxDictionary按键的定义,我编译我的项目说,他们是不确定的,当得到一个错误:

    架构armv7的未定义符号:"_kCGImagePropertyMakerMinoltaDictionary",引自: - SYMetadata.o中的[SYMetadata metadataMakerMinolta] ld:未找到架构armv7的符号

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

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

  3. Apple有很多可能的元数据字典密钥,例如kCGImagePropertyMakerNikonDictionary,存在但不起作用.例如,我用我的尼康D3100拍摄的照片:当我在我的Mac上使用预览应用程序打开它时,我可以访问尼康元数据,但是当我在iPhone上获得所有键和值时,我没有这些信息.

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

因为这将是一个公共图书馆,我已经在我的github回购中拥有它:https://github.com/dvkch/SYPictureMetadata

那些愿意发现这些错误来自哪里的人欢迎随时使用代码并提交推送请求.

如果您有任何可能的想法,将非常感谢!

斯坦

v01*_*01d 1

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

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

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

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

{MakerCanon}
{MakerNikon}
{MakerMinolta}
{MakerFuji}
{MakerOlympus}
{MakerPentax}
Run Code Online (Sandbox Code Playgroud)