这个问题的图像的每个像素是这个问题的一个副本: Making every pixel of an image having a specific color transparent制造具有特定颜色透明
但我需要一个Java等同。我需要一个图像类型(如PNG
,BMP
,...),它可以保持完全透明(alpha = 0)的颜色。当然还有一种将它保存为文件的方法。
这个问题的图像的每个像素是这个问题的一个副本: Making every pixel of an image having a specific color transparent制造具有特定颜色透明
但我需要一个Java等同。我需要一个图像类型(如PNG
,BMP
,...),它可以保持完全透明(alpha = 0)的颜色。当然还有一种将它保存为文件的方法。
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
使用ImageIO.read
读取文件和ImageIO.write
写入。使用getRGB
和setRGB
方法BufferedImage
更改颜色。
可以使用LookupOp
具有四-component LookupTable
,它将alpha分量设置为与背景匹配的颜色为零。例子可以在Using the Java 2D LookupOp Filter Class to Process Images和Image processing with Java 2D中找到。