此问题与此问题重复: Making every pixel of an image having a specific color transparent
但我需要Java等价物。我需要一个图像类型(如PNG
,BMP
,...),它可以保持这种颜色的完全透明度(alpha = 0)。当然还有一种将其保存为文件的方法。
答案 0 :(得分:3)
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);
}
}
修改代码以使每个像素透明
资料来源:http://www.rgagnon.com/javadetails/java-0265.html
答案 1 :(得分:1)
使用ImageIO.read
来读取文件,使用ImageIO.write
进行写入。使用BufferedImage
的getRGB
和setRGB
方法更改颜色。
答案 2 :(得分:0)
您可以将LookupOp
与四分量LookupTable
一起使用,以便为与背景匹配的颜色将alpha分量设置为零。可以在Using the Java 2D LookupOp Filter Class to Process Images和Image processing with Java 2D中找到示例。