|
30 Ottobre 2007 Questa volta l'argomento di discussione sono le anteprime dei file immagine; mi spiego meglio: sono in windows e sfoglio i file nelle cartelle ... ok ... se è selezionata la voce "Anteprima" nel menù "Visualizza", allora per ogni file o cartella presente nella cartella corrente, vedrò una icona (la cosidetta Anteprima): se si tratta di una immagine appartenente ai comuni formati (bmp, jpg, gif ... tanto per intenderci) l'icona raffigura l'immagine in questione altrimenti c'è semplicemente l'icona del file (che è quasi sempre l'icona del programma usato per gestire quel tipo di file). Nel caso invece che l'oggetto sia una cartella allora vedrò una icona che è composta dalla classica icona simbolo delle cartelle sulla quale ci sono le anteprime delle immagini contenute fino ad un massimo di 4. Di seguito un esempio
La cartella di riferimento
La cartella "disegni"
La cartella "foto"
La cartella "tests"
Bene ... gli screenshots dei contenuti delle cartelle conferma quanto precedentemente detto. In pratica, quando in una cartella è abilitata la visualizzazione delle anteprime (menù Visualizza -> Anteprima) per ogni file o cartella si ha una icona: per la maggiorparte dei file, è l'icona che si trova comunemente associata al file stesso , nel caso dei formati immagine più comuni (gif, jpg, bmp, png ad esempio) l'icona è invece un'anteprima dell'immagine stessa. Siccome il fatto di prendere l'immagine e crearne la sua anteprima richiede un certo dispendio di energie, Windows crea all'interno della cartella un file Thumbs.db che è un file Protetto di sistema (di default è nascosto e lo si può vedere togliendo il check alla voce "Nascondi i file protetti di sistema (consigliato)" nell'albero visibile da "Strumenti -> Opzione Cartella -> Tab Visualizzazione) e vi inserisce (poi vedremo meglio come) ste benedette anteprime. Se la cartella contiene delle sotto cartelle, verrà analizzato anche il loro contenuto per realizzare l'anteprima della cartella che appunto consiste, come si è già visto, della classica icona associata alle cartelle sulla quale vengono posizionate fino a 4 anteprime delle immagini eventualmente presenti in essa; il file Thumbs.db viene creato non appena ve ne sia la necessità. Il file Thumbs.db viene anche definito Cache della Anteprime. Se non si vuole che le anteprime vengano inserite nella cache Thumbs.db basta metter un check alla voce "Non memorizzare le anteprime nella memoria cache" nell'albero visibile da "Strumenti -> Opzione Cartella -> Tab Visualizzazione. Come si può vedere dal primo screenshot vi è un pdf: un pdf non è una immagine ma come si può vedere gli viene assegnata come icona l'anteprima della sua prima pagina; una cosa analoga succede per i filmati nel formato wmv (Windows Media Video) per i quali vi è l'anteprima del primo frame del filmato. Windows fornisce la possibilità di personalizzare l'anteprima in corrispondenza di un determinato tipo di file tramite una delle tante estensioni della Shell (Shell Extensions): Thumbnail Image Handler. Con i pacchetti disponibili sopratutto per Delphi, la realizzazione di questo tipo di Shell Extension è veramente un gioco da ragazzi. All'indirizzo nel seguito vediamo un esempio di come creare un Thumbnail Image Handler per i file .txt usando il pacchetto commerciale ShellPlus
thumbnail-image-handler-example.html
In questo esempio, la Shell Extension così creata consentirà di assegnare come anteprima per i file .txt il contenuto del file di testo medesimo (o meglio di ciò che, partendo dall'inizio, può rientrare nelle dimensioni dell'anteprima): in pratica è analogo al discorso per il pdf.
La possibilità di creare Shell Extensions viene fornita anche dall'eccezionale pacchetto Open Source in Delphi per Delphi denominato EasyNSE; è un pacchetto di componenti VCL che consente la realizzazione di qualsiasi tipo di Shell extension ivi inclusa naturalmente la Thumbnail Image Handler.
Bene, diciamo una cosa ancora prima che mi dimentichi: le icone nella modalità anteprima hanno una dimensione in pixel di 96x96; l'antepirma di una immagine sarà ottenute riducendo l'immagine fino a che entrambe le dimensioni sono minori o uguali a 96 pixel o viceversa aumentando l'immagine fino a che almeno una delle dimensioni è pari a 96 pixel: il ridimensionamento avviene sempre mantenendo le proporzioni tra base ed altezza.
Bene ora andiamo un pò più nel dettaglio a capire come vengono inserite ste benedette anteprime nel file Thumbs.db. Sono inserite tutte assieme come Alternate Data Stream (ADS) associato al file Thumbs.db. Non andrò ad approfondire il concetto di ADS (altrimenti non ci capiamo più niente con l'argomento principale di discussione) ma vi rimando obbligatoriamente a delle ricerche consistenti sui motori di ricerca (sii certo, molti avrebbero detto "Googlate" un pò ma siccome google mi sta leggermente sulle scatole per come indicizza e spesso uso Yahoo allora ... dico "Ricercate"): del resto è un argomento molto accattivante quindi non ci sarà sicuramente da annoiarsi anzi è il contrario decisamente. La prima cosa che faremo è scaricarci un software che consenta di enumerare gli ADS associati ad un file (o ad una cartella): il primo ed anche il più conosciuto è sicuramente LADS; si tratta di un semplice .exe di 35 K di dimensione che gira a linea di comando ed è liberamente scaricabile e gratuito. Quello che useremo invece è un altro programma, anch'esso un semplice .exe liberamente scaricabile e gratuito, che però è fornito di un'ottima interfaccia grafica: ADSSpy
Utilizziamo ADSSpy per analizzare la cartella di riferimento (cioè quella di cui ho postato gli screenshots): il risultato è il seguente
Come si può notare, la scansione avviene anche ricorsivamente nelle sottocartelle; come si può vedere dal risultato, il file Thumbs.db ha un Alternate Data Stream di nome "encryptable": non pensate che la dimesnione 0 bytes significhi che è vuoto (rimando alle varie ricerche sul web riguardo agli Alternate Data Stream). Bene ... ora sappiamo che ste benedette anteprime risiedono nell'ADS "encryptable" di Thumbs.db. Quello che si sa poi è che sono criptate (behh questo ce lo potevamo immaginare dal nome "encryptable"). Non ho trovato documentazioni al riguardo (riguardo a come sono elencate le varie anteprime all'itenro dell'ADS "encryptable" e soprattutto riguardo all'algoritmo di criptazione usato). Ho però trovato 2 programmi mooolto interessanti (entrambi gratuiti!!!).
Partiamo dal primo ossia Thumbnail Database Viewer
formidabile vero? Gli si trascina dentro un file Thumbs.db e tac. Come si può vedere, tra le anteprime c'è anche l'anteprima della cartella stessa che verrà usata dalla cartella superiore.
Il secondo programma è ancora meglio: non ha una interfaccia grafica e lavora da linea di comando ma consente di salvare le anteprime. Si tratta di un programma realizzato da Shapeless e si chiama ThumbsExtract . Bene anche per sta volta abbiamo finito ... alla prossima ispirazione |