Quello che devo fare è convertire lo spazio dei colori di un'immagine
da RGB a CIELab. Guardando un pochino in giro ho visto che c'è il
pacchetto JAI (java advanced image), quindi ho iniziato ad usare
quello, ma andrebbero bene anche altre soluzioni. Da un esempio trovato
nella documentazione, ho sviluppato il seguente esempio che cerca di
fare il passaggio dallo spazio colori RGB a CIEXYZ.
Cerco di farvi vedere passo per passo quello che faccio.
---
// caricamento dell'immagine
String fileName = "/test/test.png";
RenderedOp image = JAI.create("fileload", fileName);
// Verifico delle informazioni sul modello colore dell'immagine
iniziale
System.out.println("Color Model Iniziale: " +
image.getColorModel().toString());
// Creo il ParameterBlock in cui definisco il nuovo Color Space
ParameterBlock pb = new ParameterBlock();
pb.addSource(image).add(ColorSpace.getInstance(ColorSpace.CS_CIEXYZ));
// Perform the color conversion.
RenderedOp image2 = JAI.create("ColorConvert", pb); // qui da
l'errore
System.out.println("Color Model Iniziale: " +
image2.getColorModel().toString());
// Salvataggio immagine
String saveFileName = "/test/testino.png";
String format = "png";
RenderedOp op = JAI.create("filestore", image, saveFileName,
format);
---
Ecco quando faccio la compilazione che accade. Mi fa vedere il primo
output per visualizzare il color model dell'immagine iniziale, ma va in
errore quando voglio fare la conversione.
---
Color Model Iniziale: ColorModel: #pixelBits = 32 numComponents = 4
color space = java.awt.color.ICC_ColorSpace@f6438d transparency = 3 has
alpha = true isAlphaPre = false
Exception in thread "main" java.lang.IllegalArgumentException:
ColorConvert - Parameter value`s class (java.awt.color.ICC_ColorSpace)
is not an instance of the parameter class (java.awt.image.ColorModel)
for parameter "colorModel".
at javax.media.jai.JAI.createNS(JAI.java:1087)
at javax.media.jai.JAI.create(JAI.java:973)
at javax.media.jai.JAI.create(JAI.java:1395)
at test.Main.main(Main.java:48)
---
L'errore è segnalato sulla riga di codice che dovrebbe effettuare la
conversione, cioè la seguente.
--- ....
RenderedOp image2 = JAI.create("ColorConvert", pb);
---
Vi ringrazio molto per la pazienza e spero possiate aiutarmi.
--Andrea Regiato
--
Questo articolo e` stato inviato dal sito web http://www.nonsolonews.it