2009-07-01 15 views

risposta

9

Per noi è difficile determinare ciò che è importante per voi. Un approccio potrebbe essere quello di conservare tutte le proprietà di una tabella creato qualcosa di simile (sintassi SQL approssimativa):

create table exif_info (
    photo_id integer, 
    name varchar, 
    value varchar 
); 

Ogni riga di questa tabella associa proprietà una EXIF ​​con uno foto. Quindi è necessario un intero gruppo di righe per contenere tutte le proprietà EXIF ​​per una singola foto, ma questo è esattamente ciò che i database relazionali sono bravi a.

In questo modo, è possibile memorizzare tutte le informazioni disponibili senza dover decidere ora cosa potrebbe essere importante in seguito.

+2

Accetto che l'OP deve decidere quali informazioni sono importanti per loro. Tuttavia, non concordo con la memorizzazione dei dati nelle coppie nome/valore. In pratica, è molto difficile creare una query efficiente come "selezionare tutte le foto e i loro attributi acquisiti con la fotocamera X in modalità iso Y e la lunghezza focale tra A e B". Stai meglio con colonne discrete per ogni informazione importante. Le coppie nome/valore funzioneranno solo per query semplici come "seleziona tutti gli attributi della foto per il numero di foto X". – Convict

+0

Ma diverse fotocamere hanno dati EXIF ​​diversi e possono aggiungere nuovi dati in futuro. Riuscite a indovinare tutte le future funzionalità della fotocamera digitale che verranno tracciate da EXIF? –

+0

@mgb: No, e il punto è che non è necessario conoscere tutte le possibili proprietà in anticipo. Ogni singola foto può avere il proprio set di proprietà, indipendentemente da qualsiasi altra foto. –

4

Per la vostra seconda domanda ...

Picasa

  • Data e ora che la foto è stata scattata
  • Marca fotocamera & modello
  • Risoluzione
  • Orientamento
  • Lunghezza focale
  • Apertura
  • Sensibilità ISO
  • latitudine e la longitudine GPS

Flickr

  • Camera
  • Esposizione
  • Apertura
  • Lunghezza Focale
  • Velocità ISO
  • Exposure Bias
  • Flash
-1

In realtà, io consiglierei la memorizzazione EXIF ​​come un blob (JSON?) Poiché non v'è una grande variabilità tra i dispositivi che generano EXIF. Potrebbe essere più facile tirarlo come un mandrino e poi lavorarci sopra.

Se si tratta di un sito di condivisione di foto, probabilmente si desidera memorizzare anche le informazioni IPTC, probabilmente nello stesso modo.

Vedi http://bret.appspot.com/entry/how-friendfeed-uses-mysql

+0

solo se non si desidera cercare le informazioni EXIF ​​utilizzando SQL. Se vuoi cercare su ISO, allora ne hai bisogno in un campo a parte. – Val

+0

Non era elencato come requisito per la ricerca tramite SQL. Penserei che per un sito sufficientemente grande la ricerca sarebbe gestita da qualcosa come Lucene, quindi questo non sarebbe un problema. Ma poi di nuovo, forse l'OP vuole fare selezioni su ISO ... –

-2

EXIF ​​sono i metadati. Perché non utilizzare un formato dati progettato da zero per gestire i metadati? EXIF potrebbe essere facilmente inserito in RDF, che ha tonnellate di strumenti, librerie e opzioni di archiviazione.

Problemi correlati