Java更改图像颜色

时间:2016-08-12 22:23:05

标签: java

import java.awt.*;
import java.awt.image.*;

public class Transparency {
  public static Image makeColorTransparent(Image im, final Color color) {
ImageFilter filter = new RGBImageFilter() {
  public int markerRGB = color.getRGB() | 0xFF000000;

  public final int filterRGB(int x, int y, int rgb) {
    if ( ( rgb | 0xFF000000 ) == markerRGB ) {
      return 0x00FFFFFF & rgb;
      }
    else {
      return rgb;
      }
    }
  }; 

ImageProducer ip = new FilteredImageSource(im.getSource(), filter);
return Toolkit.getDefaultToolkit().createImage(ip);
}
}

GifModifiedWithTransparentBackground = 
   Transparency.makeColorTransparent
    (GifOriginalWithWithBlueBackground, new Color(0).blue);
  } 

我发现此示例将背景更改为透明,但我找不到实际设置为透明的位置。而不是让它透明,我想把它改成另一种颜色,但我不能,因为我不知道它把它设置为透明的地方。有人能告诉我它被设置为透明吗?

1 个答案:

答案 0 :(得分:1)

考虑0xAARRGGBB格式,其中AA是alpha(透明度),RR是红色,GG是绿色,BB是蓝色组件。这是十六进制的,因此值的范围是00到FF(255)。

您的问题是关于替换alpha值。这一行:

public int markerRGB = 0xFF000000;

如果您考虑0xFF000000(黑色)这样的值,AND将返回0x00000000,这是黑色的零阿尔法值,一种透明色。同样,您将获得透明的Alpha值,在您将值分配到markerRGB后,可以使图像的某些点透明。

相关问题