我正在尝试写一个缓冲图像并读回其颜色。尽管alpha保持不变,但RGB颜色似乎有所变化。我无法理解其背后的原因。修复此问题的任何帮助,表示赞赏。我需要图像返回与我写的颜色完全相同的颜色。
try {
BufferedImage img=new BufferedImage(256, 256,
BufferedImage.TYPE_INT_ARGB);
Graphics graphics =
img.createGraphics();
int r=45;int g=45; int b=100; int a=50;
System.out.println("Red "+r+" Green "+g+" Blue "+b+" alpha "+a);
graphics.setColor(new Color(r,g,b,a));
graphics.fillRect(10,10, 40, 40);
Integer i=img.getRGB(23,23);
Color c=new Color(i,true);
System.out.println("Going to read color back");
System.out.println("Red "+c.getRed()+" Green "+c.getGreen()+" Blue "+c.getBlue()+" alpha "+c.getAlpha());
} catch (Exception e) {
e.printStackTrace();
}
程序输出:红色45绿色45蓝色100 alpha 50
将要读回彩色
红色46绿色46蓝色102 alpha 50
graphics.setComposite(AlphaComposite.Src)