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);
}
我发现此示例将背景更改为透明,但我找不到实际设置为透明的位置。我不想让它变得透明,我想将它改变成另一种颜色,但我不能,因为我不知道它在哪里设置为透明。有人可以告诉我它在哪里设置为透明吗?Java更改图像颜色
答
考虑格式0xAARRGGBB
其中AA
是alpha(透明度),RR
是红色,GG
是绿色,和BB
是蓝色分量。这是十六进制的,所以值范围从00到FF(255)。
你的问题是关于alpha值的替换。这条线:
public int markerRGB = 0xFF000000;
如果考虑像0xFF000000
(黑色)的值,AND
将返回0x00000000
这也是黑色的零α值,透明色。同样,您将得到透明的alpha值,这会在您将值分配到markerRGB
之后使图像的某些点透明。
'return 0x00FFFFFF & rgb;'。这是相同的颜色,alpha设置为零。 – resueman
颜色值存储为“0xAARRGGBB”。如果你想要一个不同的alpha,用你想要的值('00'和'FF')替换alpha部分('00')。 – resueman
所以如果我改变它会改变被替换的颜色? – Repardeimaj