Newsgroup: it.comp.lang.perl
Titolo: Richiesta di opinioni per un modulo sui metadati JPEG

Salve a tutti,
ho cominciato recentemente ad interessarmi alla possibilita' di
scrivere una libreria in Perl per leggere e modificare i metadati
delle immagini JPEG (come informazioni Exif, IPTC, commenti, 
anteprime di immagine e cosi' via). Questo tipo di registrazione
di informazioni supplementari all'interno dell'immagine stessa 
e' molto utile per organizzare collezioni di foto digitali.
Per un verso o per l'altro, le librerie o i programmi Perl
esistenti non mi soddisfano pienamente, cosi' ho deciso di
buttarmi nella mischia e scrivere un modulo Perl (e' anche una
ottima occasione per imparare meglio il linguaggio ...)
Vi chiederei alcuni consigli su come organizzare questo modulo:
1) vi sembra che valga la pena di sottomettere questo modulo al
   CPAN, o cio' che e' gia' disponibile vi sembra sufficiente?
2) quale sarebbe il nome ideale per questo modulo? Attualmente
   sto utilizzando Image::MetaInfo::JPEG.
3) come faccio a decidere quale e' la minima versione di Perl
   richiesta per fare funzionare questo modulo?
4) avete opinioni su come si possa estendere? se ci siano delle
   funzionalita' interessanti a cui non ho pensato? Avete
   consigli sullo stile del codice?
Qualsiasi altro suggerimento e' naturalmente benvenuto. Potete
scaricare (PROVVISORIAMENTE, diciamo per le prossime 2 settimane)
il modulo al seguente indirizzo:
 
http://82.229.136.165/IMJ/
Di seguito, elenco le principali funzionalita' sinora fornite
dal modulo in questione. Lo scopo di questo modulo e' leggere,
modificare e riscrivere i metadati dei file JPEG. Ogni file JPEG
e' costituito da segmenti consecutivi (blocchi di dati prefissi
da un codice di due bytes ed una lunghezza in due bytes),
eccezion fatta per i veri dati grezzi dell'immagine (i cosiddetti
entropy coded segments). Molti di questi segmenti specificano dei
parametri per decodificare l'immagine, ma alcuni di essi, e
specificamente i segmenti COMment ed APPlication, contengono
metadati, ovvero informazioni su come la foto e' stata scattata
(solitamente aggiunti da una macchina fotografica digitale) e
note addizionali del fotografo. Queste informazioni supplementari
sono di speciale valore per i database di immagini, dal momento
che i metadati possono essere salvati assieme alla figura senza
utilizzare strutture supplementari.
Questo modulo funziona spezzando il file JPEG nei suoi segmenti
costituenti. Ogni file viene associato ad un oggetto di tipo
Image::MetaInfo::JPEG, che contiene un oggetto di tipo
Image::MetaInfo::JPEG::Segment per ogni segmento. I segmenti
con un formato noto vengono poi decrittati, ed il loro contenuto
puo' essere accesso in maniera strutturata. Alcuni di essi
possono infine essere modificati e riscritti su disco.
Lo stato attuale e' il seguente:
  Nome   Contenuto possibile:       Status
  ----------------------------------------
  COM    Commenti utente            decod./lettura/scrittura
  APP0   dati JFIF (+ anteprima)    decod./lettura
  APP1   dati Exif o XMP            decod.
  APP2   dati FPXR o profili ICC    decod.
  APP3   dati Exif addizionali      decod.
  APP4   HPSC                       niente
  APP12  dati testuali Pre-Exif     decod./lettura[in corso]
  APP13  dati IPTC e PhotoShop      decod./lettura/scrittura[in corso]
  APP14  informazioni Adobe         decod.
 
"Decod."(ifica) significa che il contenuto del segmento viene
decrittato e trascritto in campi a basso livello. "Lettura"
significa che gli stessi dati sono disponibili in maniera
organizzata a piu' alto livello. Il pacchetto possiede una
pagina di manuale piuttosto dettagliata, a cui vi potete
riferire per ulteriori informazioni. L'indice e' il seguente:
   1) Struttura delle immagini JPEG
   2) Gestire un oggetto JPEG
   3) Gestire un oggetto segmento
   4) Gestire un oggetto campo
   5) I commenti (segmenti "COM")
   6) I dati JFIF (segmenti "APP0")
   7) I dati IPTC (dai segmenti "APP13")
   8) Stato corrente ed altri segmenti
   -) Problemi noti
   -) Referenze
   -) Altri pacchetti e programmi (la "concorrenza")
A breve progetti di aggiungere lettura/scrittura per i dati Exif.
Il pacchetto possiede anche una serie di 67 test. 
Grazie anticipatamente per ogni consiglio,
saluti,
				Stefano Bettelli

possono infine essere modificati e riscritti su disco.
Forse non ho capito bene, ma direi che per gli utenti finali questi
particolari non sono molto interessanti. L'ideale credo sarebbe poter
accedere alle informazioni attraverso un'interfaccia semplice, del tipo
chiave->valore (un hash), indipendentemente dal segmento in cui si trova,
od eventualmente attraverso una struttura ad albero (sempre un hash,
qualcosa come $info->{IPTC}->{chiave}). 
Ciao.

 attraverso un'interfaccia semplice, del tipo chiave->valore
	pian piano, sto realizzando anche queste interfaccie
	(per ora solo per i commenti e i dati IPTC, ma presto
	anche per Exif). Nella prima fase mi sono concentrato
	sull'infrastruttura di base, che pero', ammetto, e'
	ostica per l'utente finale.

 > Attualmente sto utilizzando Image::MetaInfo::JPEG.
Dopo consultazioni, abbiamo pensato che il nome migliore
sarebbe Image::MetaData::JPEG, seguendo il significato del
prefisso meta ("ad un livello superiore a"):
	Fisica		Metafisica
	Linguaggio	Metalinguaggio
Nel nostro caso MetaInfo implicherebbe che ci sono delle Infos
da qualche parte ad un livello inferiore. Ma questo non e' vero.
Infatti, il modulo di Gisle Aas si chiama Image::Info, e non
Image::MetaInfo, e si riferisce ovviamente allo stesso nostro
livello. Purtroppo Image::Info::JPEG e' gia' in uso.