user3623903
user3623903

Reputation: 169

How to Delete the white pixels in an image in java

How can I remove the white pixels of an image before loading it in the Panel
the method for loading image in panel is:

public  void ajouterImage(File fichierImage) {   
    // desiiner une image à l'ecran 
    try {
        monImage = ImageIO.read(fichierImage);
    } catch (IOException e) {
        e.printStackTrace();
    }
    repaint(); 
}  

Upvotes: 2

Views: 3589

Answers (2)

Abdul Fatir
Abdul Fatir

Reputation: 6357

Assuming that by removing pixels you mean setting them to transparent, you need to set the alpha value of the image to zero. Here is a function colorToAlpha(BufferedImage, Color) which takes a BufferedImage and a Color as input and returns another BufferedImage with the Color set to transparent.

public static BufferedImage colorToAlpha(BufferedImage raw, Color remove)
{
    int WIDTH = raw.getWidth();
    int HEIGHT = raw.getHeight();
    BufferedImage image = new BufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_ARGB);
    int pixels[]=new int[WIDTH*HEIGHT];
    raw.getRGB(0, 0, WIDTH, HEIGHT, pixels, 0, WIDTH);
    for(int i=0; i<pixels.length;i++)
    {
        if (pixels[i] == remove.getRGB()) 
        {
        pixels[i] = 0x00ffffff;
        }
    }
    image.setRGB(0, 0, WIDTH, HEIGHT, pixels, 0, WIDTH);
    return image;
}  

Example usage:

BufferedImage processed = colorToAlpha(rawImage, Color.WHITE)

Upvotes: 2

CoderMusgrove
CoderMusgrove

Reputation: 614

You can't remove a pixel for say from an image, but you sure can change the color of it, or even make it transparent.

Let's say you have a pixel array as a variable somewhere, and you can give it the RGB value of your BufferedImage. The pixel array will be called pixels:

try {
    monImage = ImageIO.read(fichierImage);
    int width = monImage.getWidth();
    int height = monImage.getHeight();
    pixels = new int[width * height];
    image.getRGB(0, 0, width, height, pixels, 0, width);

    for (int i = 0; i < pixels.length; i++) {
        // I used capital F's to indicate that it's the alpha value.
        if (pixels[i] == 0xFFffffff) {
            // We'll set the alpha value to 0 for to make it fully transparent.
            pixels[i] = 0x00ffffff;
        }
    }
} catch (IOException e) {
    e.printStackTrace();
}

Upvotes: 3

Related Questions