使具有特定颜色的图像的每个像素透明

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 等价物。我需要一个图像类型(如PNGBMP、...),它可以保持这种颜色的完全透明(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 写入。使用BufferedImagegetRGBsetRGB 方法更改颜色。

【讨论】:

【参考方案3】:

您可以将LookupOp 与四分量LookupTable 一起使用,将与背景匹配的颜色的alpha 分量设置为零。示例可以在Using the Java 2D LookupOp Filter Class to Process ImagesImage processing with Java 2D 中找到。

【讨论】:

以上是关于使具有特定颜色的图像的每个像素透明的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV:如何为每个像素填充具有每种 RGB 颜色值的 rgb 图像?

使 SliverAppBar 具有图像作为背景而不是颜色

iOS:循环图像的像素

如何使图像变暗以保持透明度不受 CSS 或 JS 影响?

如何使背景图像顶部的透明背景颜色移至底部?

图片灰度化