Posterizar una imagen es reducir el tono de sus colores a una gama mas uniforme tipo "Poster"
Teniendo una gama de colores :
RGB: 66,66,91
RGB: 131,138,211
RGB: 73,80,214
Se reducira la diferencia entre estos mediante la formula:
NuevoColorRGB = Color_RGB - (Color_RGB MOD NIVEL)
Donde Nivel podra tomar valores entre 1 y 255
Ej:
Nivel: 100
RGB: 66,66,91
R: 66 - (66 mod 100) = 0
G: 66 - (66 mod 100) = 0
B: 91 - (91 mod 100) = 0
RGB: 131,138,211
R: 131 - (131 mod 100) = 100
G: 138 - (138 mod 100) = 100
B: 211 - (211 mod 100) = 200
RGB: 73,80,214
R: 73 - (73 mod 100) = 0
G: 80 - (80 mod 100) = 0
B: 214 - (214 mod 100) = 200
Clase: posterize.java
Codigo Fuente:
import java.awt.Color; import java.awt.image.BufferedImage; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class posterize { private BufferedImage foto; private int r,g,b; private Color c; public posterize(){} public void SetPosterize(BufferedImage f, int nivel){ this.foto = f; for(int i=0;i<foto.getWidth();i++){ for(int j=0;j<foto.getHeight();j++){ //Se obtiene el color RGB de cada pixel c = new Color(foto.getRGB(i, j)); r = c.getRed(); g = c.getGreen(); b = c.getBlue(); //Se calcula el valor para la Posterización r = (r - (r % nivel)); g = (g - (g % nivel)); b = (b - (b % nivel)); //se añade los nuevos valores foto.setRGB(i, j, new Color(r,g,b).getRGB()); } } } public BufferedImage getFoto(){ return this.foto; } }
Implementando esta clase, tenemos a diferentes valores del parametro de calculo "Nivel":
0 comentarios:
Publicar un comentario