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);
}
我发现此示例将背景更改为透明,但我找不到实际设置为透明的位置。而不是让它透明,我想把它改成另一种颜色,但我不能,因为我不知道它把它设置为透明的地方。有人能告诉我它被设置为透明吗?
答案 0 :(得分:1)
考虑0xAARRGGBB
格式,其中AA
是alpha(透明度),RR
是红色,GG
是绿色,BB
是蓝色组件。这是十六进制的,因此值的范围是00到FF(255)。
您的问题是关于替换alpha值。这一行:
public int markerRGB = 0xFF000000;
如果您考虑0xFF000000
(黑色)这样的值,AND
将返回0x00000000
,这是黑色的零阿尔法值,一种透明色。同样,您将获得透明的Alpha值,在您将值分配到markerRGB
后,可以使图像的某些点透明。