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

ktca8awb  于 2023-02-11  发布在  Java
关注(0)|答案(3)|浏览(394)

此问题与此问题重复:Making every pixel of an image having a specific color transparent
但是我需要一个Java的等价物。我需要一个图像类型(如PNGBMP,...),它可以保持这种颜色的全透明(alpha = 0)。当然,还有一种方法来保存它作为一个文件。

dohp0rv5

dohp0rv51#

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);
    }
}

修改代码以使每个像素透明
图片来源:www.example.comhttp://www.rgagnon.com/javadetails/java-0265.html

wsewodh2

wsewodh22#

使用ImageIO.read阅读文件,使用ImageIO.write写入文件。使用BufferedImagegetRGBsetRGB方法更改颜色。

e7arh2l6

e7arh2l63#

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

相关问题