Get RGB of a BufferedImage

前端 未结 1 1819
故里飘歌
故里飘歌 2020-12-05 11:15

Can anybody explain how to get an array of rgb value from a BufferedImage?

I have a grey scale image in a BufferedImage and need to extract an array of 0 to 255 v

相关标签:
1条回答
  • 2020-12-05 11:27

    You get negative numbers since the int value you get from one of the pixels are composed by red, green, blue and alpha. You need to split the colors to get a value for each color component.

    The simplest way to do this is to create a Color object and use the getRed, getGreen and getBlue (aswell as getAlpha) methods to get the components:

    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
    }
    

    Outputs:

    173
    73
    82
    255
    
    0 讨论(0)
提交回复
热议问题