Java nos permite trabajar con imagenes en blanco y negro y realizar la conversion facilmente utilizando la clase BufferedImage.TYPE_BYTE_BINARY. En este tutorial, veremos dos maneras de realizar la conversion a Blanco/Negro.
Primer metodo:
Segundo metodo
umbral = 127 color = imagen_color.getColorRGB(i,j); R = color.leer_Rojo G = color.leer_Verde B = color.leer_Azul si R > umbral entonces R = 255 sino R = 0 fin si si G > umbral entonces G = 255 sino G = 0 fin si si B > umbral entonces B = 255 sino B = 0 fin si imagen_blanco_negro.setColor(i,j, color(R,G,B) )
El Codigo de la clase WB.java con ambos metodos
import java.awt.Color; import java.awt.image.BufferedImage; /** * @web http://jc-mouse.blogspot.com/ * @author Mouse */ public class WB { private int r,g,b; private Color color; int umbral = 127;// public WB(){} public BufferedImage set_Blanco_y_Negro(BufferedImage f){ BufferedImage bn = new BufferedImage(f.getWidth(),f.getHeight(), BufferedImage.TYPE_BYTE_BINARY); //se traspasan los colores Pixel a Pixel for(int i=0;i<f.getWidth();i++) for(int j=0;j<f.getHeight();j++) bn.setRGB(i, j, f.getRGB(i, j)); return bn; } public BufferedImage set_Blanco_y_Negro_con_Umbral(BufferedImage f){ BufferedImage bn = new BufferedImage(f.getWidth(),f.getHeight(), BufferedImage.TYPE_BYTE_BINARY); //se traspasan los colores Pixel a Pixel for(int i=0;i<f.getWidth();i++){ for(int j=0;j<f.getHeight();j++){ color = new Color(f.getRGB(i, j)); //se extraen los valores RGB r = color.getRed(); g = color.getGreen(); b = color.getBlue(); //dependiendo del valor del umbral, se van separando los // valores RGB a 0 y 255 r =(r>umbral)? 255: 0; g =(g>umbral)? 255: 0; b =(b>umbral)? 255: 0; bn.setRGB(i, j, new Color(r,g,b).getRGB()); } } return bn; } }
2 comentarios:
Fantastico, gracias! Me pase media hora buscando una forma 'estandard' pero al parecer java no la tiene,
Saludos
Genial! Mil gracias!!
Publicar un comentario