Martijn Courteaux
Martijn Courteaux

Reputation: 68847

Making every pixel of an image having a specific color transparent

This question is a duplicate of this question: Making every pixel of an image having a specific color transparent

But I need a Java equivalent. And I need a image-type (like PNG, BMP, ...) which can hold this color with full transparency (alpha = 0). And of course a way to save it as a file.

Upvotes: 3

Views: 1723

Answers (3)

trashgod
trashgod

Reputation: 205765

You can use a LookupOp with a four-component LookupTable that sets the alpha component to zero for colors that match the background. Examples may be found in Using the Java 2D LookupOp Filter Class to Process Images and Image processing with Java 2D.

Upvotes: 0

thejh
thejh

Reputation: 45568

Use ImageIO.read for reading a file and ImageIO.write for writing. Use the getRGB and setRGB methods of BufferedImage to change the colours.

Upvotes: 1

Jigar Joshi
Jigar Joshi

Reputation: 240860

import java.awt.*;
import java.awt.image.*;

public class Transparency {
  public static Image makeColorTransparent
    (Image im, final Color color) {
    ImageFilter filter = new RGBImageFilter() {
      // the color we are looking for... Alpha bits are set to opaque
      public int markerRGB = color.getRGB() | 0xFF000000;

      public final int filterRGB(int x, int y, int rgb) {
        if ( ( rgb | 0xFF000000 ) == markerRGB ) {
          // Mark the alpha bits as zero - transparent
          return 0x00FFFFFF & rgb;
          }
        else {
          // nothing to do
          return rgb;
          }
        }
      }; 

    ImageProducer ip = new FilteredImageSource(im.getSource(), filter);
    return Toolkit.getDefaultToolkit().createImage(ip);
    }
}

Modified the code to make each pixel transparent

Source :http://www.rgagnon.com/javadetails/java-0265.html

Upvotes: 3

Related Questions