2016-02-07 8 views
5

Sto cercando di cambiare la saturazione di una particolare immagine, in Java. So già come modificare la tonalità e la luminosità di un pixel, ma sono perplesso su come eseguire la saturazione. Ecco il ciclo che utilizzo per scorrere tutti i pixel, se è necessario conoscerlo. So che non è buono per le prestazioni, ma è temporaneo. loop:Java Cambia Saturation Of Image

for(int y = 0; y < height; y++) { 
    for(int x = 0; x < width; x++) { 
     int pixel = image.getRGB(x, y); 
     int r = (pixel >> 16) & 0xFF; 
     int g = (pixel >> 8) & 0xFF; 
     int b = (pixel) & 0xFF; 

     //Adjust saturation: 
     //????????????????????? 
    } 
} 

Insomma, non sono sicuro di come cambiare la saturazione di un pixel, ma voglio sapere come. Il ciclo che sto usando sopra funziona perfettamente, quindi non ci sono problemi lì. Grazie! : D

+0

Qual è il 'class' per' image'? –

+0

java.awt.image.BufferedImage è il tipo di immagine che sto usando. –

risposta

1

È possibile utilizzare:

int red = ...; 
int green = ...; 
int blue = ...; 

float[] hsb = Color.RGBtoHSB(red, green, blue, null); 

float hue = hsb[0]; 
float saturation = hsb[1]; 
float brightness = hsb[2]; 

/* then change the saturation... */ 

int rgb = Color.HSBtoRGB(hue, saturation, brightness); 

red = (rgb>>16)&0xFF; 
green = (rgb>>8)&0xFF; 
blue = rgb&0xFF; 
+1

Grazie, amico! : D –

+1

L'ho accettato: D –