在Java中从像素读取RGB值

在Java中从像素读取RGB值,java,image,colors,rgb,pixel,Java,Image,Colors,Rgb,Pixel,我试图从绘制的像素读取RGB值,但我只得到一个值。当我尝试获取alpha、red、green和blue的值时,它总是对每个值都显示“0”,除了blue,我实际获取的值,这个值总是与“rgb”相同。我的代码如下所示,如果你们能想出一个解决方案,我将不胜感激 int rgb = image.getRGB(250, 10); rgb = rgb/-65793; System.out.println(rgb); Color färg = new Color(rgb, true); int r = fär

我试图从绘制的像素读取RGB值,但我只得到一个值。当我尝试获取alpha、red、green和blue的值时,它总是对每个值都显示“0”,除了blue,我实际获取的值,这个值总是与“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);
打印内容如下:

38
0
0
38
0
您不必除以RGB值


您不必除以RGB值。

无需除以二进制值

试试这个:

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);

不需要除以二进制值

试试这个:

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);

你为什么要除以
-65793
?我知道“färg”在瑞典语中的意思是颜色。不幸的是,ä是一个非ASCII字符,以后与他人共享代码时可能会出现严重的编码问题。为什么要除以
-65793
?我知道“färg”在瑞典语中的意思是颜色。不幸的是,ä是一个非ASCII字符,以后在与他人共享代码时可能会给您带来严重的编码问题。