2012-12-16 25 views
5

我目前正在嘗試製作一個簡單的庫,以面向對象的方式訪問圖片元數據(沒有更多的字典)。我遇到了很多奇怪的bug:iPhone ImageIO不返回圖片的所有元數據

  1. 即使kCGImagePropertyMakerMinoltaDictionarykCGImagePropertyMakerFujiDictionarykCGImagePropertyMakerOlympusDictionarykCGImagePropertyMakerPentaxDictionary鍵定義,我編譯我的項目說,他們是不確定的,當得到一個錯誤:爲架構的ARMv7

    未定義的符號: 「_kCGImagePropertyMakerMinoltaDictionary」,從引用: - [SYMetadata metadataMakerMinolta]在SYMetadata.o LD:符號(多個)未找到架構的ARMv7

  2. kCGImagePropertyExifBodySerialNumberImageIO/CGImageProperties.h定義鍵太多,但在加載的iOS 5.1.1項目時,我得到一個錯誤說這是不可用:

    使dyld:找不到符號:_kCGImagePropertyExifBodySerialNumber 引用自:在/ var /移動/應用/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,exis但不起作用。例如,我用尼康D3100拍攝了一張照片:當我用Mac上的預覽應用打開它時,我可以訪問尼康元數據,但是當我獲取iPhone上的所有按鍵和值時,我沒有這些信息。

我在Moutain Lion 10.8.2上運行XCode 4.5.2(上一次穩定構建AFAIK)。我嘗試編譯/在設備和模擬器上運行,結果相同。

因爲這將是一個公共圖書館,我已經擁有這一切在我的GitHub庫:https://github.com/dvkch/SYPictureMetadata

那些願意去發現其中的錯誤來自歡迎到玩的代碼,並提交推送請求的任何時間。

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

Stan

+0

所以,我有點困惑您的問題所寫。您是否將使用尼康D3100拍攝的文件移至iPhone上?我的意思是,沒有理由把這把鑰匙放在iPhone上拍攝的照片上 - 這不是尼康。 ?? – Dad

+0

對不起,我試圖通過郵件轉移它,並且還使用了EyeFi卡。除非我使用NEF格式,否則這兩者都不起作用。 – dvkch

+0

有趣..... – Dad

回答

1

我很確定SDK有問題。您遇到的錯誤是在SDK中定義的符號,但實際上並不存在。我已經檢查過你的項目,並且你已經將ImageIO.framework包含在了它們的全部定義中,而且其他所有的鍵都可以正常工作。 kCGImagePropertyMakerNikonCameraSerialNumber有效,但kCGImagePropertyMakerMinoltaDictionary不。

如果你看看CGImageProperties文檔的頂部,它說框架是「ApplicationServices/ImageIO」。這是不可能的,ApplicationServices在iOS上不存在。本文檔中至少有一個錯誤。顯然,他們已經逐字複製了OSX文檔。

我肯定會提交關於此問題和文檔的錯誤報告。在OSX

FWIW是那些鍵(有可能在iOS相同)如下:

{MakerCanon} 
{MakerNikon} 
{MakerMinolta} 
{MakerFuji} 
{MakerOlympus} 
{MakerPentax} 
+0

感謝這就是我的想法。你對第二點有什麼想法嗎?這是同一個問題嗎?那3呢? – dvkch

+0

呵呵,如果你有任何想要使用或不使用'kCGImagePropertyExifBodySerialNumber'來編譯代碼的方法,我希望我的方法可以在iOS 5.0下工作,並且總是返回nil,並且真正使用它的版本號優於6.0。 – dvkch

+0

填寫錯誤報告,希望他們能有答案。我已經填補了一個關於不在5.1版本上運行iOS模擬器並且從未得到答案的錯誤 – dvkch