BufferedImage , es posible un efecto de mascara?

hgouveia
27 de Mayo del 2006
Hola tengo una imagen, .bmp, que tiene un personaje y alrededor un color que hace de mascara, quisiera saber como coloco ese color TRANSPARENTE, para que cumpla su funcion, hay alguna forma en que yo le diga a la imagen cierto color RGB, es la mascara (el color que hara de transparencia)

NightRipper
27 de Mayo del 2006
yo tb tengo la misma duda asi que si alguien sabe como hacerlo seria muy bueno!!!

Romeo
27 de Mayo del 2006
yo tb necesito ayuda con eso alguien que pueda ilustrarnos

Emilio
27 de Mayo del 2006
Prueba a pasarlo a .gif, con la tranparencia ya puesta.

Si no, tb puedes, despues de pintarlo en el Graphics, con un bucle, a cambiar los pixeles de determinado color.

hgouveia
27 de Mayo del 2006
despues de buscar la forma de poder hacer la mascara de una imagen diferente de PNG y GIF, por fin hice un metodo que cumple con lo que queria y espero que les sirva a la comunidad.

public BufferedImage mascaraBmp(BufferedImage bmp){
// "bmp" este seria el archivo de imagen original a quien quiere darle
// la transparencia al pixel, que se lo pasar por parametro

GraphicsConfiguration CONFIG =GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();

BufferedImage image = CONFIG.createCompatibleImage(bmp.getWidth(),bmp.getHeight(),Transparency.BITMASK);

Graphics2D g2 = image.createGraphics();
g2.setComposite(AlphaComposite.Src);
g2.drawImage(bmp, 0, 0, null);
g2.dispose();


Color maskColor = new Color(0,0,0); // aqui colocarian el color que
//quieren colocar transparente en la forma R,G,B

for (int y=0;y < image.getHeight();y++)
for (int x=0;x < image.getWidth();x++) {
int col = image.getRGB(x, y);
if (col == maskColor.getRGB()) {
image.setRGB(x, y, col & 0x00ffffff);
}
}
return image; //la imagen final con las transparencias
}