BufferedImage , es posible un efecto de mascara?
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)
yo tb tengo la misma duda asi que si alguien sabe como hacerlo seria muy bueno!!!
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.
Si no, tb puedes, despues de pintarlo en el Graphics, con un bucle, a cambiar los pixeles de determinado color.
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
}
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
}