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

前端 未结 2 1463
星月不相逢
星月不相逢 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

提交回复
热议问题