我试图从绘制的像素中读取 RGB 值,但我只得到一个值。当我尝试获取 alpha、红色、绿色和蓝色的值时,它总是对每个值都说“0”,除了我实际获得值的蓝色,并且该值始终与“rgb”相同。我的代码如下所示,如果你们中的任何人能想到解决方案,我将不胜感激。int rgb = image.getRGB(250, 10);rgb = rgb/-65793;System.out.println(rgb);Color färg = new Color(rgb, true);int r = färg.getRed();int g = färg.getGreen();int b = färg.getBlue();int a = färg.getAlpha();System.out.println(r);System.out.println(g);System.out.println(b);System.out.println(a);打印出来的内容如下:3800380
2 回答
萧十郎
TA贡献1815条经验 获得超13个赞
不需要对二进制值进行除法。
尝试这个:
int rgb = img.getRGB(250, 10);
Color color = new Color(rgb);
// get colors (e.g. red)
int red = color.getRed();
System.out.println(red);
// retrieve alpha value via bitshifting
int alpha = (rgb & 0xff000000) >>> 24
System.out.println(alpha);
一只斗牛犬
TA贡献1784条经验 获得超2个赞
BufferedImage bi = ...;
int x = ..;
int y = ..;
Color converted = new Color(bi.getRGB(x, y));
您不必除以 RGB 值。
添加回答
举报
0/150
提交
取消