How to convert getRGB(x,y) integer pixel to Color(r,g,b,a) in Java?

前端 未结 2 1449
星月不相逢
星月不相逢 2020-11-28 11:21

I have the integer pixel I got from getRGB(x,y), but I don\'t have any clue about how to convert it to RGBA format. For example, -16726016 should b

相关标签:
2条回答
  • 2020-11-28 11:32

    If I'm guessing right, what you get back is an unsigned integer of the form 0xAARRGGBB, so

    int b = (argb)&0xFF;
    int g = (argb>>8)&0xFF;
    int r = (argb>>16)&0xFF;
    int a = (argb>>24)&0xFF;
    

    would extract the color components. However, a quick look at the docs says that you can just do

    Color c = new Color(argb);
    

    or

    Color c = new Color(argb, true);
    

    if you want the alpha component in the Color as well.

    UPDATE

    Red and Blue components are inverted in original answer, so the right answer will be:

    int r = (argb>>16)&0xFF;
    int g = (argb>>8)&0xFF;
    int b = (argb>>0)&0xFF;
    

    updated also in the first piece of code

    0 讨论(0)
  • 2020-11-28 11:34
        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());
    

    prints out:

    0
    200
    0
    255
    

    Is that what you mean?

    0 讨论(0)
提交回复
热议问题