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?
TYPE_INT_ARGB. Represents an image with 8-bit RGBA color components packed into integer pixels. static int. TYPE_INT_ARGB_PRE. Represents an image with 8-bit RGBA color components packed into integer pixels.
A BufferedImage is essentially an Image with an accessible data buffer. It is therefore more efficient to work directly with BufferedImage. A BufferedImage has a ColorModel and a Raster of image data. The ColorModel provides a color interpretation of the image's pixel data.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With