L'interfaccia deve consentire le seguenti operazioni applicative:
In ogni momento deve essere possibile caricare una nuova immagine. In ogni momento in cui c'e' un'immagine deve essere possibile filtrarla con qualsiasi filtro. Ogni volta in cui l'immagine corrente e' frutto di un filtraggio deve essere possibile ripristinare l'immagine precedente (prima del filtraggio).
Per tutto il resto e' lasciata piena liberta' di scelta, purche' l'interfaccia risultante si comporti in modo ragionevole e prevedibile.
In Java, un'immagine e' una griglia di pixel dove il colore di ogni pixel e' descritto mediante una terna di componenti (rosso,verde,blu), ciascuna delle quali e' un intero fra 0 e 255. Java ha metodi in grado di caricare un'immagine da file nei piu' comuni formati (es. gif, jpeg).
I filtri applicabili all'immagine sono:
Sono fornite tre classi che, opportunamente istanziate, permettono
di realizzare tutti i filtri sopra elencati.
Queste classi fanno parte dell'applicazione, VANNO USATE
COME SONO e NON devono essere modificate!
Classe ColorSwapFilter - file ColorSwapFilter.java
Filtro di immagine che scambia tra loro due delle componenti
rossa, verde, blu dei colori di un'immagine.
Le due componenti da scambiare sono specificate alla creazione
del filtro.
Il costruttore prende come parametri due interi che possono assumere
valori all'interno dell'insieme di costanti
ColorSwapFilter.RED, ColorSwapFilter.GREEN, ColorSwapFilter.BLUE.
Classe NegativeFilter - file NegativeFilter.java
Filtro di immagine che mette al negativo una o piu' delle componenti
rossa, verde, blu dei colori di un'immagine.
Le componenti da mettere al negativo sono specificate alla creazione
del filtro.
Il costruttore prende come parametri tre booleani che stabiliscono
rispettivamente se invertire la componente rossa, verde, blu (se il
booleano e' vero la componente va invertita).
Classe HighLowFilter - file HighLowFilter.java
Filtro di immagine che aumenta o diminuisce una o piu' delle componenti
rossa, verde, blu dei colori di un'immagine.
L'entita' dell'aumento o diminuzione per ciascuna componente e'
specificata alla creazione del filtro.
Il costruttore prende come parametri un valore di incremento intero
(positivo o negativo) per ciascuna componente di colore, gli incrementi
devono essere nell'intervallo [-255,+255].
E' fornito un programma di esempio -
file Esempio1.java
che mostra come usare queste classi filtro
(in realta' lo mostra su una sola classe).
Questa classe e' un esempio da cui si possono
PRENDERE DELLE PARTI per scrivere la propria interfaccia.
Una volta compilato con javac Esempio1.java per eseguirlo digitare java Esempio1 "immagine" dove "immagine" e' il nome del file contenente l'immagine.
Il programma crea un frame con un'immagine e un bottone, premendo il bottone le tre componenti rossa,verde,blu dell'immagine vengono simultaneamente invertite.
Vedere nell'esempio come si procede per:
Questo e' un progetto di interfacce grafiche. Pertanto, sara' tenuto conto non solo del fatto che tutte le funzioni richieste siano presenti nell'interfaccia sviluppata, ma anche e di quanto facile e gradevole risulta l'uso dell'interfaccia stessa per l'utente.