Jeg sidder og laver et image-filter som skal virke på samme måde som Hue/Saturation justeringen i Photoshop.
Men Brightness (eller Lightness som photoshop kalder det) driller lidt. Hvis man i Photoshop sætter Lightness til 100 bliver hele billedet hvidt. I nedenstående kode bliver brightness bare sat til 100 hvilket ikke nødvendigvis er hvid. Er der nogen som hjælpe mig med at omskrive mit simple javakode til at virke på samme måde?
Jeg valgte generel programmering, da jeg mest af alt søger at finde ud af hvordan algoritment fungerer i photoshop. At oversætte det til java er det mindste. Jeg går ud fra at java er langt fra det eneste sprog, hvor farver kan gemmes i en int.
Jeg har fået en ide, som bringer mig lidt nærmere (stadig ikke helt photoshop agtigt). I stedet for at regne brigtness ud, på ovenstående måde, så bibeholder jeg brightness. Konverterer hsb til rgb og beregner brightness for hver farve vha. nedenstående:
private int lightness(float lightness, int newColor) { if (lightness>0){ // lighter int r = (newColor>>16)&0xff; int g = (newColor>>8)&0xff; int b = newColor&0xff; int newR = r+(int)((0xff-r)*lightness); int newG = g+(int)((0xff-g)*lightness); int newB = b+(int)((0xff-b)*lightness); newColor = (Math.min(255,newR)<<16)|(Math.min(255,newG)<<8)|(Math.min(255,newB)); } else if (lightness<0){// darker float l = lightness+1; newColor = (((int)((newColor&0xff0000)*l))&0xff0000) | // red (((int)((newColor&0xff00)*l))&0xff00) | // green (((int)((newColor&0xff)*l))&0xff);// blue } return newColor; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.