Java Image mask(Image img, Color color)

Here you can find the source of mask(Image img, Color color)

Description

Pone color en una imagen transparente.

License

Open Source License

Declaration

public static Image mask(Image img, Color color) 

Method Source Code


//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;
    }
}

Related

  1. imageOf(Action action)
  2. initVistaDragTextureImage()
  3. isContinueImageUpdate(JComponent comp, Image img)
  4. loadImage(byte[] imgStr, int imageSize)
  5. makeColorTransparent(Image im, Color c)
  6. openImage()
  7. openImageFileChooser(Component com)
  8. paintToImage(Component comp)
  9. prepareImagePath(String html, URL url)