3

通过调用getRGB(int x, int y)一个BufferedImage对象,可以得到一个单一的负数。

如何将三个不同的值(红色、绿色和蓝色)转换为这个单一的负数?

4

3 回答 3

10

使用颜色类:

new Color(r, g, b).getRGB()
于 2012-12-01T21:41:11.153 回答
3

BufferedImage 最终委托给java.awt.image.ColorModelwhich 使用以下代码:

public int getRGB(Object inData) {
    return (getAlpha(inData) << 24)
        | (getRed(inData) << 16)
        | (getGreen(inData) << 8)
        | (getBlue(inData) << 0);
}

修改它以满足您的需求是一项简单的练习。

于 2012-12-01T21:41:58.077 回答
-1

JB Nizet 的回答很棒,但是在创建数千次“颜色”类型的新对象时可能会非常慢。最简单的方法是:

int rgb = (red << 16 | green << 8 | blue)

正如ByteBit所回答的那样

于 2015-04-16T11:37:56.877 回答