由于从像素之一获得的int值由红色,绿色,蓝色和alpha组成,因此会得到负数。您需要拆分颜色以获得每个颜色分量的值。
要做到这一点,最简单的方法是创建一个
Color对象,并使用
getRed,
getGreen和
getBlue(藏汉为
getAlpha)方法来获取组件:
public static void main(String... args) throws Exception { BufferedImage image = ImageIO.read( new URL("http://upload.wikimedia.org/wikipedia/en/2/24/Lenna.png")); int w = image.getWidth(); int h = image.getHeight(); int[] dataBuffInt = image.getRGB(0, 0, w, h, null, 0, w); Color c = new Color(dataBuffInt[100]); System.out.println(c.getRed()); // = (dataBuffInt[100] >> 16) & 0xFF System.out.println(c.getGreen()); // = (dataBuffInt[100] >> 8) & 0xFF System.out.println(c.getBlue()); // = (dataBuffInt[100] >> 0) & 0xFF System.out.println(c.getAlpha()); // = (dataBuffInt[100] >> 24) & 0xFF}输出:
1737382255



