有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中从像素读取RGB值的图像

我试图从绘制的像素读取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

共 (2) 个答案

  1. # 1 楼答案

    不需要除以二进制值

    试试这个:

    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);
    
  2. # 2 楼答案

    BufferedImage bi = ...;
    int x = ..;
    int y = ..;
    Color converted = new Color(bi.getRGB(x, y));
    

    您不必除以RGB值