2012-12-16 21 views
5

Attualmente sto cercando di creare una libreria semplice per accedere ai metadati delle immagini in modo orientato agli oggetti (non più dizionari). Ho incontrato un sacco di strani insetti:iPhone ImageIO non restituisce tutti i metadati dell'immagine

  1. Anche se kCGImagePropertyMakerMinoltaDictionary, kCGImagePropertyMakerFujiDictionary, kCGImagePropertyMakerOlympusDictionary, kCGImagePropertyMakerPentaxDictionary chiavi sono definiti, ottengo un errore quando si compila il mio progetto dicendo che non sono definiti:

    simboli non definiti per l'architettura ARMv7 : "_kCGImagePropertyMakerMinoltaDictionary", si fa riferimento da: - [SYMetadata metadataMakerMinolta] in SYMetadata.o ld: il simbolo (s) non trovato per l'architettura ARMv7

  2. kCGImagePropertyExifBodySerialNumber è una chiave definita anche da ImageIO/CGImageProperties.h ma durante il caricamento del progetto in iOS 5.1.1 ottengo un errore dicendo che non è disponibile:

    dyld: Simbolo non trovato: _kCGImagePropertyExifBodySerialNumber Citato da:/var/mobile/Applications /0D8144E6-6313-4347-B503-247F5ACC0A11/ConnectTIG.app/ConnectTIG Previsto in: /System/Library/Frameworks/ImageIO.framework/ImageIO in/var/mobile/Applicazioni/0D8144E6-6313-4347-B503-247F5ACC0A11 /ConnectTIG.app/ConnectTIG

  3. Apple ha molti tasti di dizionario dei metadati possibili, ad esempio kCGImagePropertyMakerNikonDictionary, che è ma non funzionano Ad esempio, ho una foto scattata con la mia Nikon D3100: quando la apro con l'app Anteprima sul mio Mac posso accedere ai metadati Nikon, ma quando ottengo tutte le chiavi e i valori sull'iPhone non ho queste informazioni.

Sto eseguendo XCode 4.5.2 (ultimo build AFAIK stabile) su Moutain Lion 10.8.2. Ho provato a compilare/eseguire su dispositivo e simulatore, gli stessi risultati.

in quanto questo sarà una biblioteca pubblica ho già tutto sul mio github repo: https://github.com/dvkch/SYPictureMetadata

Coloro che sono disposti a scoprire dove questi bug provengono sono invitati a giocare con il codice e inviare richieste push in qualsiasi momento.

Se avete qualche idea possibile, sarà molto apprezzato!

Stan

+0

così, sono un po 'confuso per la tua domanda come scritto. Stai trasferendo i file acquisiti con la tua Nikon D3100 sul tuo iPhone? Voglio dire, non c'è motivo per cui questa chiave si trovi in ​​una foto scattata sull'iPhone giusto - non è una Nikon. ?? – Dad

+0

scusate, ho provato a trasferirlo per posta, e ho anche usato una scheda EyeFi. Nessuno dei due ha funzionato, a meno che non abbia usato il formato NEF. – dvkch

+0

interessante ..... – Dad

risposta

1

Sono abbastanza sicuro che c'è qualcosa di sbagliato con l'SDK. L'errore che stai ricevendo è un simbolo definito nell'SDK ma in realtà non esiste. Ho controllato il tuo progetto e hai incluso l'ImageIO.framework in cui sono tutti definiti, e in effetti tutte le altre chiavi funzionano correttamente. kCGImagePropertyMakerNikonCameraSerialNumber funziona ma kCGImagePropertyMakerMinoltaDictionary non lo fa.

Se si osserva la parte superiore della documentazione di CGImageProperties, il framework è "ApplicationServices/ImageIO". Questo è impossibile, ApplicationServices non esiste su iOS. Almeno un errore in questa documentazione già. Chiaramente hanno copiato letteralmente la documentazione OSX.

Segnalerei sicuramente un bug report su questo problema e sulla documentazione.

FWIW su OSX quelle chiavi (probabilmente lo stesso su iOS) sono i seguenti:

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

Grazie è quello che pensavo. Hai qualche idea sul punto 2? È lo stesso problema? E i 3? – dvkch

+0

Oh e se hai un modo per rendere il codice compilabile con o senza l'uso di 'kCGImagePropertyExifBodySerialNumber', ad esempio, mi piacerebbe che i miei metodi funzionassero sotto iOS 5.0 e tornassi sempre nullo, e ho davvero usato la chiave per le versioni superiore a 6.0. – dvkch

+0

segnalazioni di bug riempite, spero che abbiano delle risposte. Ho già riempito un bug relativo al mancato funzionamento del simulatore iOS sulla versione 5.1 e non ho mai avuto una risposta – dvkch