使具有特定颜色的图像的每个像素透明
这个问题与这个问题重复: 使具有特定颜色的图像的每个像素都透明
但我需要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
写入。 使用BufferedImage
的getRGB
和setRGB
方法更改颜色。
您可以将LookupTable
与四组件LookupTable
,该组件将alpha组件设置为零,以匹配与背景匹配的颜色。 可以在使用Java 2D LookupOpfilter类来 处理使用Java 2D的 图像和图像处理中找到示例。