使具有特定颜色的图像的每个像素透明
Posted
技术标签:
【中文标题】使具有特定颜色的图像的每个像素透明【英文标题】:Making every pixel of an image having a specific color transparent 【发布时间】:2010-12-07 19:25:23 【问题描述】:这个问题是这个问题的重复: Making every pixel of an image having a specific color transparent
但我需要一个 Java 等价物。我需要一个图像类型(如PNG
、BMP
、...),它可以保持这种颜色的完全透明(alpha = 0)。当然还有一种将其保存为文件的方法。
【问题讨论】:
【参考方案1】: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
【讨论】:
【参考方案2】:使用ImageIO.read
读取文件,使用ImageIO.write
写入。使用BufferedImage
的getRGB
和setRGB
方法更改颜色。
【讨论】:
【参考方案3】:您可以将LookupOp
与四分量LookupTable
一起使用,将与背景匹配的颜色的alpha 分量设置为零。示例可以在Using the Java 2D LookupOp Filter Class to Process Images 和Image processing with Java 2D 中找到。
【讨论】:
以上是关于使具有特定颜色的图像的每个像素透明的主要内容,如果未能解决你的问题,请参考以下文章