Approfondimenti
di Michael J. Hammel traduzione di Antonio Cartelli



Breve rassegna di ImageMagick

   Dopo mesi di rinvii sono finalmente riuscito a dare un'occhiata all'insieme dei programmi che costituiscono ImageMagick, il pacchetto di John Cristy ed E.I. DuPont De Nemours e compagnia Inc. .  Era arrivata finalmente l'ora, infatti, di dare una risposta alle tante richieste di molti lettori che mi chiedevano informazioni sul programma, che cosa ne pensassi, come funzionasse e così via.
   ImageMagick è un pacchetto per la manipolazione di immagini che sulla falsariga di XV o del GIMP può essere eseguito su una grande varietà di sistemi Unix, incluso Linux, e che trova spazio anche sulle piattaforme MS e Macintosh. Esso è accessibile in formato sorgente o binario mediante la pagina http://www.wizards.dupont.com/cristy/ImageMagick.html, dalla quale ho scaricato i file eseguibili (sotto forma di un file tar.gzip) utilizzando i percorsi relativi. Poiché il software cerca di disporre i file eseguibili ed alcuni file ad essi collegati nell'area /usr/X11R6, nella quale ho soltanto file di sistema (ogni altra cosa trova posto in /usr/local), ho dovuto scompattare il tutto in un'area locale, modificare il nome dell'area X11R6 in quella locale, ricreare il file tar e scompattare il tutto, come superutente (root) a partire dall'area root (/). All'infuori di questo fuori programma, però, il processo di installazione è stato completamente indolore.
   Il software scaricato è costituito da un insieme di 9 pacchetti che consentono l'editing di immagini sia in maniera interattiva che a riga di comando:
  1. display
  2. import
  3. animate
  4. montage
  5. convert
  6. mogrify
  7. identify
  8. combine
  9. xtp
Tutti i pacchetti sono provvisti di pagine di manualistica ben documentate e rispondono alla perfezione all'opzione -? del comando di riga utilizzato, per fornire una descrizione sintetica del comando corrispondente.
   Il primo di questi pacchetti, display, è un programma interattivo che utilizza XWindow, la sua interfaccia consiste essenzialmente di una colonna di bottoni ognuno dei quali apre un menu ed una finestra di visualizzazione. La Figura 1 mostra la finestra di default per la visualizzazione delle immagini ed il menu.
La finestra delle immagini modificherà ogni immagine (dithering) affinché possa adattarsi al dispositivo di visualizzazione ed alle caratteristiche hardware del supporto corrispondente.
   I tasti di menu sono di utilizzo immediato - basta cliccare su uno di essi per vedere quali sono le opzioni disponibili per quel menu. Le opzioni dei menu di più alto livello sono le seguenti: are: Sotto la voce File si trovano diverse opzioni tra le quali val la pena segnalare: una funzione di stampa, Print (che utilizza il formato Postscript - per cui occorre che sul sistema sia stato installato Ghostscript) e New, Open, Next, Former e Visual Directory. Quest'ultima opzione (Visual Directory) è simile all'opzione Open in quanto apre anch'essa una finestra attraverso la quale selezionare il file di immagine che si desidera prelevare. Non sono sicuro di aver utilizzato al meglio ed in maniera corretta questa opzione, in ogni caso l'impressione che mi sono fatto è che tale opzione sia molto simile allo schnauzer dell'XV.
   I menu di Effects ed F/X sono molto simili in quanto entrambi forniscono elementi per la manipolazione delle immagini, un po' come gli algoritmi XV o i plug-in del GIMP. Ho trovato molto interessante la funzione Shade (Ombreggiature) in grado di trasformare una figura bidimensionale in un'attraente immagine 3D con l'aggiunta di ombre nei posti appropriati. Molte funzioni sono simili a quelle che si trovano nel pacchetto del GIMP ma ce ne sono anche altre in più rispetto a quelle che XV mette a disposizione mediante il suo menu degli algoritmi.
   Il numero delle caratteristiche del programma di visualizzazione è suggestivo ma, proprio perché questo è un pacchetto per disegnatori professionisti è un passo o due avanti in quanto a facilità di utilizzo rispetto al GIMP. Va notato anche che alcune delle caratteristiche degli effetti sono un po' più attraenti delle corrispondenti funzioni del GIMP. La caratteristica "annotate" che consente di inserire testo all'interno di un'immagine dispone di un visualizzatore d'anteprima ragionevole per i font dei caratteri. A favore del GIMP, inoltre, c'è da dire che ha un'interfaccia d'utente molto più sofisticata. Durante il poco tempo che ho avuto a disposizione per testare il display ho potuto sperimentare diversi blocchi del mio sistema Linux 1.2.13, anche se penso che ciò possa dipendere dal fatto che le librerie libc installate erano piuttosto vecchie. Mi è parso anche che il monitor fosse un po' più lento nel provvedere al rinfresco delle immagini video. Il kit per ridisegnare le finestre è invece decisamente molto lento (si presenta un po' come Tk o Motif, ma non sono proprio sicuro che sia così). Anche in questo caso può darsi che tutto dipenda dal fatto che la mia versione di Linux è piuttosto vecchia.
   Al di là dell'interfaccia grafica gli altri 8 programmi nel pacchetto in distribuzione sono del tipo a riga di comando. Da quanto ho potuto capire questo è proprio ciò che rende ImageMagick un programma dal valore impareggiabile per l'insieme degli strumenti del disegnatore che utilizzi la grafica in ambiente Linux. Ogni comando ha le sue brave finalità ma le gestisce con una grande varietà di opzioni. Tutti insieme, invece, questi comandi possono essere utilizzati per automatizzare in maniera abbastanza facile la gestione delle immagini da visualizzare su Web. Ritengo che molte delle caratteristiche interne al software di visualizzazione vengano ricoperte anche da queste interfacce a riga di comando, mentre ho scoperto delle altre caratteristiche che mi sembra non vengano gestite dal software di visualizzazione.
   Import viene utilizzata per acquisire intere schermate o settori rettangolari di videate presenti sul monitor. Per specificare la finestra o la regione dello schermo da visualizzare si può specificare un ID o il nome della finestra oppure si può utilizzare una tecnica di importazione interattiva con il mouse. Le opzioni prevedono la possibilità di catturare l'immagine della videata del gestore delle finestre (window manager) oltre alla possibilità di adattare e selezionare immagini prima del loro salvataggio. Il formato del file in uscita dipende dall'estensione del nome del file utilizzato per il salvataggio, ovvero si può ottenere premettendo al nome del file il tipo che si vuole, seguito da due punti, come nel caso riportato appresso: ps:output_image. Per default questa opzione provvede a salvare un file nel formato Postscript incapsulato (Encapsulated Postscript).
   Animate provvede a prendere una sequenza di immagini di tipo qualsiasi ed a visualizzarle come se si trattasse di un'animazione. Come nel caso della maggior parte dei programmi di animazione la qualità dell'animazione stessa dipende dal numero e dal tipo delle immagini, dalla velocità del computer e dalla memoria disponibile per l'elaborazione delle immagini. Non avendo a disposizione un numero adeguato di immagini con le quali provare a testare il software non ho potuto approfondire le reali caratteristiche di questo programma.
   Montage consente di creare una singola immagine a partire da una serie di altre immagini. Le immagini in input vengono ridimensionate per adattarsi ad un formato prefissato, che per default è un quadrato di 120x120 pixel, e vengono quindi disposte l'una accanto all'altra su una serie di righe. Per default in ogni riga trovano posto 5 immagini mentre vengono rappresentate in tutto quattro righe. Se si dispone di più di 20 immagini vengono prodotti dei montaggi aggiuntivi in uscita. Si può anche specificare un numero di immagini maggiore per un singolo montaggio e si può modificare il numero delle immagini in input da utilizzare, mediante l'opzione -tile del comando. Il comando Montage offre una notevole quantità di opzioni. Tra le altre cose val la pena ricordare: la grandezza della pagina può essere predisposta in modo che l'output postscript possa adattarsi ad una grande quantità di fogge e grandezze di fogli di carta, si può predisporre il livello della correzione gamma per i file in output, ritagliare ed adattare le immagini in input, disporre un motivo ornamentale intorno ad un'immagine in output, e decidere dove disporre un'immagine all'interno di un riquadro se essa non occupa l'intera schermata (ci si riferisce a questa zona come quella parte del video nella quale graviterà l'immagine). I file in input possono essere identificati mediante delle etichette utilizzando vari tipi di font. Alle immagini in input si possono aggiungere ombre 3D mentre sfondi retinati possono andare a coprire zone dello schermo e bordi non ricoperti da immagini in input.
   Convert e Identify sono programmi complementari. Identify può essere utilizzato, sulla base del valore del numero magico di un file, per determinare il formato dell'immagine di un particolare file. Insieme alle informazioni sul tipo di file come la sua grandezza vengono visualizzate altre informazioni: se è o meno a colori, quale è il numero dei colori utilizzato nell'immagine. "Convert" prende un'immagine in un dato formato e la converte in un'altra di formato predeterminato. Il tipo di formato può essere specificato proprio come con "Import", mediante un prefisso o un suffisso che denotano il formato dei tipi di file in input ed output. "Convert" può anche leggere file di immagini compresse Unix (suffisso .Z), ma non è in grado di scrivere l'immagine convertita in un file compresso. Immagini multi-pagina o a più parti vengono convertite in più file di output utilizzando il nome del file con un numero di scena come suffisso. Quest'ultima è in ogni caso un'opzione modificabile. Si può inserire una stringa di formato del tipo di quelle che si usano con printf() nel nome del file in output per numerare in maniera sequenziale le immagini ed includere, ancora una volta, il tipo di formato come suffisso.
   Mogrify manipola immagini alla stessa stregua di quanto fanno le opzioni Effects ed F/X a video. Questo programma prende un file in input e lo elabora in base al tipo ed all'ordine delle opzioni che vengono specificate. Siccome le opzioni vengono elaborate nell'ordine in cui si presentano sulla riga di comando, è possibile predisporre una serie di opzioni che devono essere applicate comlessivamente ad una serie di immagini, quindi modificare una o più di queste opzioni per una singola immagine - il tutto sempre mediante un singolo comando di linea. Mogrify consente anche di effettuare scripting ed elaborazione batch di immagini. Anche XV consente di fare più o meno la stessa cosa, sebbene non abbia mai utilizzato questa caratteristica però, è certo che il numero di funzioni di elaborazione disponibile è molto più alto in mogrify. Il GIMP ha un'interfaccia per lo scripting ma l'elaborazione batch deve essere effettuata mediante Net-FU (un'interfaccia di rete). NetPBM fornisce esclusivamente un'interfaccia a riga di comando, ma, per ottenere le stesse cose che con mogrify occorre lanciare un bel po' di programmi tutti insieme. Image Alchemy, un prodotto commerciale per l'elaborazione di immagini della HandMade Software sembra essere l'unico antagonista per ImageMagick in quanto ad elaborazione batch.
   Il pacchetto ImageMagick, infine, include una caratteristica extra - xtp - che consente il trasferimento di file attraverso una rete in maniera molto simile a quanto si fa utilizzando ftp. Secondo quanto riportato sul sito web della ImageMagick xtp non richiede alcun comando interattivo per cui il trasferimento dei file può essere eseguito agilmente in modalità batch.
   Compreso nel software del pacchetto, John Christy e E.I. Dupont De Nemours e co. forniscono anche un programma plug-in denominato ImageMagick Plug-In. Sembra essere (sebbene non abbia del tutto le idee chiare su questo tema) l'insieme delle librerie per la gestione delle immagini condivise, specifiche per un buon numero di formati di file immagine molto popolari. In effetti è quasi del tutto equivalente alla libreria libgr se si eccettua il fatto che le librerie ImageMagick supportano i file MPEG. All'interno del pacchetto Plug-In sono inclusi anche un bel po' di programmi, tra i quali ricordo: un generatore di thumbnail TIFF ed i programmi cjpeg e djpeg, utili rispettivamente per la compressione e la decompressione da e nel formato JPEG. La maggioranza dei programmi nel Plug-In, però, sono destinati alla gestione del formato TIFF.
   Come si può vedere il software della ImageMagick ha caratteristiche non indifferenti e siccome non ho provveduto a fare alcun confronto tra la qualità delle immagini prodotte da ImageMagick e quelle provenienti da XV e NetPBM, quanto riportato, per il momento, rappresenta una semplice introduzione al pacchetto. Di certo posso già dire che il software è di ottima fattura, ricco di caratteristiche e molto ben documentato. La società ha annunciato frequenti aggiornamenti del software stesso e ulteriori programmi in aggiunta a quelli attuali, il che è sicuramente molto rassicurante e molto di più di quanto non ci si possa aspettare da XV e NetPBM. Chi ha provato XV, o il GIMP o NetPBM ed ha lamentato qualche carenza per delle funzioni mancanti che si sarebbe aspettato, penso debba dare un'occhiata a ImageMagick. Ovviamente nessun armamentario grafico, anche il più sofisticato, è mai completo, e nessun pacchetto soddisfa mai tutte le esigenze possibili, però occorre sicuramente essere al corrente dei programmi disponibili. ImageMagick è uno di quei programmi che veramente merita di essere preso in considerazione da coloro che hanno o stanno acquisendo gli strumenti per realizzare elaborazioni grafiche in ambiente Linux.
indent
 

[ La pagina della Musa ] [ Indice ]


Per l'articolo originale: © 1997 Michael J. Hammel - Pubblicato sul n. 20 della Linux Gazette
Per l'edizione italiana: © 1998 A. Cartelli - Pubblicato sul n. 1 anno II di LGEI a cura del LUGBari