Reputation: 829
Could anyone explain for me how java stores color in TYPE_INT_RGB and TYPE_INT_ARGB ?
Do these lines of code work properly for calculating red, green and blue ?
int red= (RGB>>16)&255;
int green= (RGB>>8)&255;
int blue= (RGB)&255;
And what about TYPE_INT_ARGB ? How can I get red, green and blue from TYPE_INT_ARGB?
Upvotes: 18
Views: 40498
Reputation: 1579
The TYPE_INT_ARGB
represents Color as an int
(4 bytes) with alpha channel in bits 24-31, red channels in 16-23, green in 8-15 and blue in 0-7.
The TYPE_INT_RGB
represents Color as an int
(4 bytes) int the same way of TYPE_INT_ARGB
, but the alpha channel is ignored (or the bits 24-31 are 0).
Look the javadoc of java.awt.Color and java.awt.image.BufferedImage.
Upvotes: 28
Reputation: 598
You are correct for TYPE_INT_RGB. The equivalent TYPE_INT_ARGB code would be:
int rgb = rgbColor.getRGB(); //always returns TYPE_INT_ARGB
int alpha = (rgb >> 24) & 0xFF;
int red = (rgb >> 16) & 0xFF;
int green = (rgb >> 8) & 0xFF;
int blue = (rgb ) & 0xFF;
Spelling out the color elements for the bytes from most significant to least significant, you get ARGB, hence the name.
Upvotes: 12
Reputation: 13041
These are constant values that indicate the color model of an instance of BufferedImage
. These values do not themselves store the color.
Upvotes: 0