【问题标题】:Reading RGB value from a pixel in Java从Java中的像素读取RGB值
【发布时间】:2019-03-11 17:40:53
【问题描述】:

我试图从绘制的像素中读取 RGB 值,但我只得到一个值。当我尝试获取 alpha、red、green 和 blue 的值时,除了我实际获得值的蓝色之外,它总是显示“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);

打印的内容如下:

38
0
0
38
0

【问题讨论】:

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

标签: java image colors rgb pixel


【解决方案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】:
    BufferedImage bi = ...;
    int x = ..;
    int y = ..;
    Color converted = new Color(bi.getRGB(x, y));
    

    你不必划分 RGB 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 2018-01-23
      相关资源
      最近更新 更多