Hi, well I have a BufferedImage (Sprite) and want to set the background color transparent…
I use this code
public class Transparency
{
public static BufferedImage makeColorTransparent(BufferedImage im, final Color color)
{
ImageFilter filter = new RGBImageFilter()
{
public int markerRGB = color.getRGB() | 0xFF000000;
public final int filterRGB(int x, int y, int rgb)
{
if ( ( rgb | 0xFF000000 ) == markerRGB )
{
return 0x00FFFFFF & rgb;
}
else
{
return rgb;
}
}
};
ImageProducer ip = new FilteredImageSource(im.getSource(), filter);
Image src = Toolkit.getDefaultToolkit().createImage(ip);
BufferedImage jo = new BufferedImage(src.getWidth(null), src.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = jo.createGraphics();
g2.drawImage(src, 0, 0, null);
g2.dispose();
return jo;
}
}
It was actually made so that it puts out awt.Image but I need BufferedImage, so I changed it this way…
But if Images are bigger its a bit laggy because I use this, I believe:
Image src = Toolkit.getDefaultToolkit().createImage(ip);
BufferedImage jo = new BufferedImage(src.getWidth(null), src.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = jo.createGraphics();
g2.drawImage(src, 0, 0, null);
g2.dispose();
thats because you cannot simply cast an Image to BufferedImage…
or is there a faster possibility ?