【发布时间】:2012-12-16 14:13:20
【问题描述】:
我目前正在尝试制作一个简单的库,用于以面向对象的方式访问图片元数据(不再需要字典)。我遇到了很多奇怪的错误:
-
即使定义了
kCGImagePropertyMakerMinoltaDictionary、kCGImagePropertyMakerFujiDictionary、kCGImagePropertyMakerOlympusDictionary、kCGImagePropertyMakerPentaxDictionary键,我在编译我的项目时仍会收到错误提示它们未定义:架构 armv7 的未定义符号: “_kCGImagePropertyMakerMinoltaDictionary”,引用自: - SYMetadata.o 中的[SYMetadata metadataMakerMinolta] ld: 未找到架构 armv7 的符号
-
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 在 /var/mobile/Applications/0D8144E6-6313-4347-B503-247F5ACC0A11/ConnectTIG.app/ConnectTIG
Apple 有很多可能的元数据字典键可用,例如
kCGImagePropertyMakerNikonDictionary,它们存在但不起作用。例如,我有一张使用 Nikon D3100 拍摄的照片:当我在 Mac 上使用 Preview 应用程序打开它时,我可以访问 Nikon 元数据,但是当我在 iPhone 上获取所有键和值时,我没有这些信息。
我在 Moutain Lion 10.8.2 上运行 XCode 4.5.2(最后一个稳定版本 AFAIK)。我尝试在设备和模拟器上编译/运行,结果相同。
由于这将是一个公共图书馆,我已经在我的 github 存储库中找到了所有内容:https://github.com/dvkch/SYPictureMetadata
欢迎那些愿意发现这些错误从何而来的人来玩代码并随时提交推送请求。
如果您有任何可能的想法,将不胜感激!
斯坦
【问题讨论】:
-
所以,我对你写的问题有点困惑。您是否正在将使用尼康 D3100 拍摄的文件移动到 iPhone 上?我的意思是,这把钥匙没有理由出现在用 iPhone 拍摄的照片中——它不是尼康。 ??
-
对不起,我尝试通过邮件传输,并且使用了EyeFi卡。除非我使用 NEF 格式,否则这些都不起作用。
-
我还通过在我的应用程序中将文件作为资源导入来做到这一点。请查阅我的存储库并构建示例应用程序,您将很快能够重现这些错误。
-
我想弄清楚当图像到达手机时是否还有您正在谈论的元数据。想知道这是否在复制过程中被剥离。这就是我问的原因。有趣的转移到手机上,然后再传回电脑,看看它在电脑上是否仍然有效。
-
我做到了。我将图像作为应用程序的资源包含在内,然后使用 iFunBox 将它们取回,打开它们并看到所有元数据仍然存在。显然我不是唯一一个有问题的人:stackoverflow.com/questions/12224530/…
标签: objective-c metadata exif javax.imageio