Config
class Config
kotlin.Any | ||
↳ | kotlin.Enum<android.graphics.Bitmap.Config> | |
↳ | android.graphics.Bitmap.Config |
Possible bitmap configurations. A bitmap configuration describes how pixels are stored. This affects the quality (color depth) as well as the ability to display transparent/translucent colors.
Summary
Enum values | |
---|---|
Each pixel is stored as a single translucency (alpha) channel. |
|
Each pixel is stored on 2 bytes. |
|
Each pixel is stored on 4 bytes. |
|
Special configuration, when bitmap is stored only in graphic memory. |
|
Each pixel is stored on 4 bytes. |
|
Each pixel is stored on 8 bytes. |
|
Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision. |
Enum values
ALPHA_8
enum val ALPHA_8 : Bitmap.Config
Each pixel is stored as a single translucency (alpha) channel. This is very useful to efficiently store masks for instance. No color information is stored. With this configuration, each pixel requires 1 byte of memory.
ARGB_4444
enum valARGB_4444: Bitmap.Config
Deprecated: Because of the poor quality of this configuration, it is advised to use ARGB_8888
instead.
Each pixel is stored on 2 bytes. The three RGB color channels and the alpha channel (translucency) are stored with a 4 bits precision (16 possible values.) This configuration is mostly useful if the application needs to store translucency information but also needs to save memory. It is recommended to use ARGB_8888
instead of this configuration. Note: as of android.os.Build.VERSION_CODES#KITKAT
, any bitmap created with this configuration will be created using ARGB_8888
instead.
ARGB_8888
enum val ARGB_8888 : Bitmap.Config
Each pixel is stored on 4 bytes. Each channel (RGB and alpha for translucency) is stored with 8 bits of precision (256 possible values.) This configuration is very flexible and offers the best quality. It should be used whenever possible.
When accessing directly via #copyPixelsFromBuffer or #copyPixelsToBuffer, use this formula to pack into 32 bits:
int color = (A & 0xff) << 24 | (B & 0xff) << 16 | (G & 0xff) << 8 | (R & 0xff);
HARDWARE
enum val HARDWARE : Bitmap.Config
Special configuration, when bitmap is stored only in graphic memory. Bitmaps in this configuration are always immutable. It is optimal for cases, when the only operation with the bitmap is to draw it on a screen.
RGBA_1010102
enum val RGBA_1010102 : Bitmap.Config
Each pixel is stored on 4 bytes. Each RGB channel is stored with 10 bits of precision (1024 possible values). There is an additional alpha channel that is stored with 2 bits of precision (4 possible values). This configuration is suited for wide-gamut and HDR content which does not require alpha blending, such that the memory cost is the same as ARGB_8888 while enabling higher color precision.
When accessing directly via #copyPixelsFromBuffer or #copyPixelsToBuffer, use this formula to pack into 32 bits:
int color = (A & 0x3) << 30 | (B & 0x3ff) << 20 | (G & 0x3ff) << 10 | (R & 0x3ff);
RGBA_F16
enum val RGBA_F16 : Bitmap.Config
Each pixel is stored on 8 bytes. Each channel (RGB and alpha for translucency) is stored as a half-precision floating point value
. This configuration is particularly suited for wide-gamut and HDR content.
When accessing directly via #copyPixelsFromBuffer or #copyPixelsToBuffer, use this formula to pack into 64 bits:
long color = (A & 0xffff) << 48 | (B & 0xffff) << 32 | (G & 0xffff) << 16 | (R & 0xffff);
RGB_565
enum val RGB_565 : Bitmap.Config
Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision. This configuration can produce slight visual artifacts depending on the configuration of the source. For instance, without dithering, the result might show a greenish tint. To get better results dithering should be applied. This configuration may be useful when using opaque bitmaps that do not require high color fidelity.
When accessing directly via #copyPixelsFromBuffer or #copyPixelsToBuffer, use this formula to pack into 16 bits:
short color = (R & 0x1f) << 11 | (G & 0x3f) << 5 | (B & 0x1f);