如何在Java中将get.rgb(x,y)整数像素转换为Color(r,g,b,a)?

Gab*_*lla 25 java image colors

我有从get.rgb(x,y)获得的整数像素,但我没有任何关于如何将其转换为RGBA的线索.例如,-16726016应为Color(0,200,0,255).有小费吗?

AKX*_*AKX 44

如果我猜对了,你得到的是表格的无符号整数0xAARRGGBB,所以

int b = (argb)&0xFF;
int g = (argb>>8)&0xFF;
int r = (argb>>16)&0xFF;
int a = (argb>>24)&0xFF;
Run Code Online (Sandbox Code Playgroud)

会提取颜色成分.但是,快速浏览文档说你可以做到

Color c = new Color(argb);
Run Code Online (Sandbox Code Playgroud)

要么

Color c = new Color(argb, true);
Run Code Online (Sandbox Code Playgroud)

如果你想要Color中的alpha组件.

UPDATE

红色和蓝色组件在原始答案中颠倒,因此正确的答案将是:

int r = (argb>>16)&0xFF;
int g = (argb>>8)&0xFF;
int b = (argb>>0)&0xFF;
Run Code Online (Sandbox Code Playgroud)

在第一段代码中也更新了

  • 根据http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#getRGB%28%29:位24-31是alpha,16-23是红色,8-15是绿色,0-7是蓝色 (3认同)

lah*_*her 24

    Color c = new Color(-16726016, true);
    System.out.println(c.getRed());
    System.out.println(c.getGreen());
    System.out.println(c.getBlue());
    System.out.println(c.getAlpha());
Run Code Online (Sandbox Code Playgroud)

打印出来:

0
200
0
255
Run Code Online (Sandbox Code Playgroud)

你是这个意思吗?