Here you can find the source of mask(Image img, Color color)
public static Image mask(Image img, Color color)
//package com.java2s; //License from project: Open Source License import java.awt.*; import java.awt.image.*; import javax.swing.*; public class Main { /**//from w w w . ja v a 2s .c om * Pone color en una imagen transparente. */ public static Image mask(Image img, Color color) { BufferedImage bimg = toBufferedImage(getEmptyImage(img.getWidth(null), img.getHeight(null))); Graphics2D g = bimg.createGraphics(); g.drawImage(img, 0, 0, null); g.dispose(); for (int y = 0; y < bimg.getHeight(); y++) { for (int x = 0; x < bimg.getWidth(); x++) { int col = bimg.getRGB(x, y); if (col == color.getRGB()) { bimg.setRGB(x, y, col & 0x00ffffff); } } } return toImage(bimg); } /** * Convierte un objeto Image a un BufferedImage * * @param img El objeto Image a convertir * @return El BufferedImage obtenido */ public static BufferedImage toBufferedImage(Image img) { if (img instanceof BufferedImage) { return (BufferedImage) img; } // Crea un buffered image con trasparencia BufferedImage bimage = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB); // Dibuja la imagen en el buffered image Graphics2D bGr = bimage.createGraphics(); bGr.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); bGr.drawImage(img, 0, 0, null); bGr.dispose(); // Retorna el buffered image return bimage; } /** * Crea una imagen vacia con transparencia * * @param width El ancho de la nueva imagen * @param height El alto de la nueva imagen * @return la nueva imagen */ public static Image getEmptyImage(int width, int height) { BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); return toImage(img); } /** * Obtiene el ancho de una Image */ public static int getWidth(Image imagen) { int width = new ImageIcon(imagen).getIconWidth(); return width; } /** * Obtiene el ancho de un IconImage */ public static int getWidth(ImageIcon imagen) { return imagen.getIconWidth(); } /** * Obtiene el alto de una Image */ public static int getHeight(Image imagen) { int height = new ImageIcon(imagen).getIconHeight(); return height; } /** * Obtiene el alto de un IconImage */ public static int getHeight(ImageIcon imagen) { return imagen.getIconHeight(); } /** * Convierte un BufferedImage a Image * * @param bimage El BufferedImage a convertir * @return El objeto Image obtenido */ public static Image toImage(BufferedImage bimage) { // Casting para convertir de BufferedImage a Image Image img = (Image) bimage; return img; } }