BMP decoder
This extension allows the use of BMP images in LVGL.
Library source: https://github.com/caj-johnson/bmp-decoder
The pixels are read on demand (not the whole image is loaded) so using BMP images requires very little RAM.
If enabled in lv_conf.h
by LV_USE_BMP
LVGL will register a new
image decoder automatically so BMP files can be directly used as image
sources. For example:
lv_image_set_src(my_img, "S:path/to/picture.bmp");
Note that, a file system driver needs to registered to open images from
files. Read more about it File System (lv_fs_drv) or just
enable one in lv_conf.h
with LV_USE_FS_...
Limitations
Only BMP files are supported and BMP images as C array (
lv_image_dsc_t
) are not. It's because there is no practical differences between how the BMP files and LVGL's image format stores the image data.BMP files can be loaded only from file. If you want to store them in flash it's better to convert them to C array with LVGL's image converter.
The BMP files color format needs to match with
LV_COLOR_DEPTH
. Use GIMP to save the image in the required format. Both RGB888 and ARGB888 works withLV_COLOR_DEPTH
32
Palette is not supported.
Because not the whole image is read in cannot be zoomed or rotated.
Example
Open a BMP image from file
C code
View on GitHub#include "../../lv_examples.h"
#if LV_USE_BMP && LV_BUILD_EXAMPLES
/**
* Open a BMP file from a file
*/
void lv_example_bmp_1(void)
{
lv_obj_t * img = lv_image_create(lv_screen_active());
/* Assuming a File system is attached to letter 'A'
* E.g. set LV_USE_FS_STDIO 'A' in lv_conf.h */
lv_image_set_src(img, "A:lvgl/examples/libs/bmp/example_32bit.bmp");
lv_obj_center(img);
}
#endif